xwp 3 react环境构建 - nuanxin1111/react GitHub Wiki
npm install -g babel-cli
npm install -g browserify
npm install -g babelify babel-preset-react babel-preset-es2015
创建一个目录
mkdir test
npm init
下载react
http://facebook.github.io/react/downloads/react-0.14.2.zip
把解压出来的build目录拿出来放到自己的test项目中,创建测试文件src/main.jsx和index.html
//main.jsx
ReactDOM.render(
<h1>Hello, world xwp!</h1>,
document.getElementById('example')
);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello React!</title>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
</head>
<body>
<div id="example"></div>
<script src="lib/main.js">
</script>
</body>
</html>
xwp@X61s:~/workspace/react/test$ tree . ├── build │ ├── react-dom.js │ ├── react-dom.min.js │ ├── react.js │ ├── react.min.js │ ├── react-with-addons.js │ └── react-with-addons.min.js ├── index.html ├── lib │ └── main.js └── src └── main.jsx
把jsx风格src/main.jsx,转换为部署时使用的js babel --presets es2015,react src/main.jsx -o lib/main.js 调试时,文件保存,自动转换 babel --presets es2015,react --watch src/main.jsx -o lib/main.js 目录保存,自动转换 babel --presets es2015,react --watch src/ -d lib/
html文件里需要引用react.js和react-dom.js以及刚刚转换好的lib/main.js
当商业部署时,把react.js和react-dom.js换成min版,lib/main.js也预先编译完,放到nginx服务器上。
browserify不支持直接打包es2015(es6),所以需要先用babel把es2015的语法转换为es5,再用browserify打包。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello React!</title>
</head>
<body>
<div id="example"></div>
</body>
<script src="lib/bunld.js"></script>
</html>
"--save"安装到本项目内,-g安装到全局环境中。--save使用时需要先npm init创建npm管理文件。 npm install --save react react-dom
// main.jsx
var React = require('react');
var ReactDOM = require('react-dom');
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('example')
);
babel --presets es2015,react src/main.jsx -o lib/main.js
browserify -t babelify --presets react lib/main.js -o lib/bunld.js
bunld.js包含了react.js和react-dom.js以及main.js中的所有东西。此文件较大,不适合多页面部署。
http://www.browsersync.io/
sudo npm install -g browser-sync
browser-sync start --server --files "*.*"
// --files 路径是相对于运行该命令的项目(目录)
browser-sync start --server --files "css/*.css, *.html"
// 如果你的文件层级比较深,您可以考虑使用 **(表示任意目录)匹配,任意目录下任意.css 或 .html文件。
browser-sync start --server --files "**/*.css, **/*.html"
当前目录下所有文件发生修改时,浏览器会自动刷新。
或者修改package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "browser-sync start --server --files \"*.*\""
},
"author": "",
"license": "MIT"
}
启动服务器,此刻浏览器可以看到输出
npm run dev
spm install module-name -save 自动把模块和版本号添加到dependencies部分
spm install module-name -save-dve 自动把模块和版本号添加到devdependencies部分
至于配置文件区分这俩部分, 是用于区别开发依赖模块和产品依赖模块, 以我见过的情况来看 devDepandencies主要是配置测试框架, 例如jshint、mocha。