写下这个标题之后我愣了几分钟,突然发现无从下笔。随后想了想,就当是学习React
过程中的随笔吧,写点简单的开发过程顺便记一些刚接触时踩到的坑。
准备工作
React Developer Tools
首先需要准备的就是React
提供的Chrome
拓展工具了,这个扩展在检测到开发状态的React
程序时会在控制台添加一个React
工具栏。在这里可以很方便的查看到组件间结构、属性、状态跟事件,可以很方便地进行调试:
下载地址:React Developer Tools
Webpack
由于React
无法直接在浏览器环境中运行,需要使用Webpack
进行通过Babel
编译打包。
当然你也可以直接引入
react.js
跟react-dom.js
直接在浏览器中跑,不过很卡就是了。。。
下面是webpack
的低配:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var path = require('path'),
root = path.resolve(__dirname),
src = path.resolve(root, 'js'),
dist = path.resolve(root, '../js');
module.exports = {
entry: path.resolve(src, 'index.jsx'),
output: {
path: dist,
filename: 'index.js'
},
devtool: 'cheap-module-eval-source-map',
module: {
loaders: [
{
test: /\.jsx$/,
loader: 'babel'
}
]
}
}
简单说明:
entry
:入口文件,webpack
说白了就是从入口文件一层层地查找代码中使用了require(xxx)
或import x from x
语句,把所有依赖的文件全都写到一个文件里。对,就这么简单!output
:指定最终打包好的文件输出到哪里,没什么可说的devtool
:指定开发时生成sourceMap
的格式,绝大多数直接用cheap-module-eval-source-map
就OK,想深入了解的点这里module.loaders
:一系列的加载器,test
用来匹配require(xxx)
中的xxx
来确定是否用这个加载器处理所识别到的文件。loader
用来指定加载器,这里指定的babel
需要安装依赖npm i -D babel-loader
Babel
Babel
的使用参考:从零开始:现在开始用ES6写代码
这里的额外配置就是加一个react
的转码包:
- 安装预置转码包
npm i -D babel-preset-react
- 修改配置文件
.babelrc
1
2
3{
"presets": ["react", "es2015"]
}
项目入口
访问入口 index.html
首先我们要准备一个近乎空白的HTML
文档:1
2
3
4
5
6
7
8
9
10
11
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React Demo</title>
</head>
<body>
<div id="root"></div>
<script src="js/index.js"></script>
</body>
</html>
- 这个
HTML
文件head
按需设置,或引入样式表,或设置meta
,随你喜欢,body
节点中ID
为root
的节点则是我们react
所有DOM
渲染的的目标节点,
一般情况下不要直接渲染到body
节点中,虽然可以正常加载,但是控制台会弹出警告,这是因为许多工具或插件(譬如弹窗)也会渲染DOM
到body
节点中,这会影响React
的正常运行- 下面就是一个脚本引用,引用
webpack
配置中output
所指的输出文件。
逻辑入口 index.js
这个入口其实就是webpack
配置中的entry
所指向的文件,也就是上文访问入口中引用的脚本文件,webpack
将从这个文件开始查找依赖1
2
3
4
5
6// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Index from './component/index.jsx';
ReactDOM.render(<Index />, document.getElementById('index'));
所有文章非特别说明皆为原创。技术更迭迅猛,部分内容可能会作修改,为保证信息与源同步,转载时请务必注明文章出处!谢谢合作 :-)
- 引入三个依赖,其中前两个为
React
基础依赖,必须引入,最后一个为我们自己写的一个组件。webpack
编译时将从这三条语句出发,按顺序查找依赖(按树查找,即:如果依赖中还有其他依赖,则一直查找下去,直到依赖树的末端为止),最后读取查找到的全部文件内容后,按照依赖顺序写入到当前文件中,最终输出到output
中指定的位置ReactDOM.render()
第一个参数为将要渲染的React
元素,这里的<Index />
则是直接把第三行引入的组件直接放到这里进行渲染,第二个参数是指把这个组件渲染到页面的哪个DOM
节点中。