通過 @assassin_cike 提醒有這樣一個loader,今天試了一下真的很是好用。javascript
hot loader 是幹嗎的呢?引用官網的一句話就是java
React Hot Loader is a plugin for Webpack that allows instantaneous live refresh without losing state while editing React components.node
簡單的講,就是使用 react 編寫代碼時,能讓修改的部分自動刷新。但這和自動刷新網頁是不一樣的,由於 hot-loader 並不會刷新網頁,而僅僅是替換你修改的部分,也就是上面所說的 without losing state
。react
用一張圖來感覺一下:webpack
其實官方(點這裏)已經介紹的很清楚了,只是可能一些小細節得本身找一下,我在這裏就記錄一下具體的使用流程吧。git
首先是安裝 react-hot-loadergithub
npm install --save-dev react-hot-loader
另外 hot-loader 是基於 webpack-dev-server,因此還得安裝 webpack-dev-serverweb
npm install --save-dev webpack-dev-server
webpack-dev-server
使用 react-hot-loader 時,首先仍是要讓 webpack-dev-server 打開。npm
在根目錄新建 server.js
json
var webpack = require('webpack'); var WebpackDevServer = require('webpack-dev-server'); var config = require('./webpack.config'); new WebpackDevServer(webpack(config), { publicPath: config.output.publicPath, hot: true, historyApiFallback: true }).listen(3000, 'localhost', function (err, result) { if (err) { return console.log(err); } console.log('Listening at http://localhost:3000/') });
webpack.config.js
而後在 webpack 的配置文件裏添加 react-hot-loader。
打開 webpack.config.js
var webpack = require('webpack'); module.exports = { // 修改 entry entry: [ // 寫在入口文件以前 "webpack-dev-server/client?http://0.0.0.0:3000", "webpack/hot/only-dev-server", // 這裏是你的入口文件 "./src/app.js", ], output: { path: __dirname, filename: "build/js/bundle.js", publicPath: "/build" }, module: { loaders: [ { test: /\.jsx?$/, exclude: /node_modules/, // 在這裏添加 react-hot,注意這裏使用的是loaders,因此不能用 query,應該把presets參數寫在 babel 的後面 loaders: ['react-hot', 'babel?presets[]=react,presets[]=es2015'] } ] }, // 添加插件 plugins: [ new webpack.HotModuleReplacementPlugin() ]
首先運行 server.js
(固然你能夠在 package.json 裏面配置,使用 npm start 運行)
node server.js
而後照常使用 webpack
webpack --display-error-details --progress --colors --watch
發現每次修改後目錄下就多了一堆 xxxx.hot-update.js
和 xxxx.hot-update.json
,正在想咋弄。。。