React环境准备:
NodeJS,React Dev Tools
安装插件React Dev Tools:
1. 如果可以访问Google,则可以直接在Chrome Store里安装;
- 不能访问Google,可以在GIthub上获取React Dev Tools的源码,build出这个插件;
- 搜索React Dev Tools,文档中说这个插件在v3版本中,所以先把对应的版本下载到本地;
- 到根目录,rpm install,然后到package.json中找到对应的build命令,”build:extension:chrome”: “node ./shells/chrome/build”, 试了build:extension:chrome 不行,就直接用node ./shells/chrome/build进行build;
- build完成后,进入到目录react-devtools-3\shells\chrome\build,试了把unpacked 文件夹拖到了chrome://extensions里不行,那就用手动点击 “Load Unpacked”,然后选中这个文件夹就行了;
- 关闭React页面,然后再次打开就看到多了一个React tab;
React代码初识
- 可直接在HTML中写React 代码:,引用react相关js,在script标签里注明 type=”text/babel”,这样才能识别为react的code语法,如果去掉type=”text/babel”,就会报错。
<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Hello React!</title><script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script><script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script><script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script></head><body><div id="example"></div><script type="text/babel">class HelloWorld extends React.Component {render() {return (<div>hello world react</div>);}}ReactDOM.render(<HelloWorld/>,document.getElementById('example'));</script></body></html>
- 在js中写jsx的react 代码:
import React, {Component} from 'react';import ReactDOM from 'react-dom';import './index.css';import * as serviceWorker from './serviceWorker';class App extends Component{render(){return (<div>David</div>);}}ReactDOM.render(<App />, document.getElementById('root'));serviceWorker.unregister();
React生态:
在Github上的项目 awesome-react包含了React的各个方面, 脚手架,可视化,数据管理,各类UI组件库,企业级解决方案。
https://github.com/enaqx/awesome-react
React代码规范:
standard.js规范
- npm install standard —save-dev
- npm install snazzy —save-dev
- 配置 package.json,添加一条名为lint 的npm script “scripts”: {“lint”: “standard —verbose|snazzy”}
- 使用插件,实时检查代码规范;
bem css规范:
通过阅读Element-UI源码来分析学习BEM规范, 使用BEM规范语义化更加鲜明,阅读更容易理解, B意思是Block 块,E意思是Element 元素,M意思是Modifier 修饰器。块与元素之间使用__ 双下划线连接,块或元素与修饰器之间使用— 双中划线连接。
.person{}
.personhand{} => 双下划线 代表子元素和子组件;
.person—female{} => 双中划线 —代表元素状态;
.person—female__hand{} => 代表female状态下的子组件;
<button class="button">Normal Button</button><button class="button--state-success">Success Button</button><div class="footer"><button class="footer__button">footer button</button><button class="footer__button--state-success">footer button</button></div>.button {} /*基础按钮*//*通过双中划线连接修饰器 这样语义化更加鲜明*/.button--state-success {} /*状态为成功的button*/.footer__button{} /*底部按钮样式*/.footer__button--state-success{} /*底部状态为成功的按钮样式*//*state-success 多个单词直接使用-连接*/
