剛剛學習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