刚刚学习React,发现React在ES6下的语法才是本体,结合ES6新的语言特性,使组件化开发显得更加直观。并且如今的Angular2也开始使用支持强类型的TypeScript,转译(transpiling)成了屡见不鲜。不学就分分钟跟不上时代的脚步了……html
在搭建Webpack+React+ES6环境的过程当中,我参考过不少2016年的老帖,发现最后运行时都有各类各样的报错。版本更新迭代太快了,搭建时的配置也不可避免地有了细微的变化。在各类老帖的基础上,我总结出2017年可用的搭建步骤以下:node
npm config set registry http://registry.npm.taobao.org/
npm install babel webpack webpack-dev-server -g
mkdir react-hello-world cd react-hello-world npm init
注:执行npm init命令时会让你输入各类项目信息,通常直接回车就好,会自动填写默认值。可是,要注意name不能跟咱们的模块和项目文件目录同名。react
初始化时也能够使用如下命令:webpack
npm init -yes
这样便不会再有询问的环节,自动生成默认的package.json文件。可是也要手动修改name,不能跟咱们的模块和项目文件目录同名。es6
npm install react react-dom --save
npm install babel-loader babel-core babel-preset-react babel-preset-latest --save
touch index.html App.js main.js webpack.config.js
目录结构以下所示:web
module.exports = { entry: './main.js', // 入口文件路径 output: { path: '/', filename: 'index.js' }, devServer: { inline: true, port: 3333 }, module: { loaders: [ { test: /\.js$/, // babel 转换为兼容性的 js exclude: /node_modules/, loader: 'babel-loader', query: { presets: ['react', 'latest'] } } ] } }
(1).index.html:npm
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>React Hello World</title> </head> <body> <div id="app"></div> <script src="index.js"></script> </body> </html>
(2).App.js:json
import React from 'react'; class App extends React.Component { render() { return <div>Hello World!</div> } } export default App
(3).main.js:babel
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; ReactDOM.render(<App />, document.getElementById('app'));
"scripts": { "start": "webpack-dev-server" },
npm start