hot loader 是干嘛的呢?引用官網(wǎng)的一句話就是
React Hot Loader is a plugin for Webpack that allows instantaneous live refresh without losing state while editing React components.
簡單的講,就是使用 react 編寫代碼時(shí)容诬,能讓修改的部分自動(dòng)刷新丧鸯。但這和自動(dòng)刷新網(wǎng)頁是不同的奄侠,因?yàn)?hot-loader 并不會(huì)刷新網(wǎng)頁钝吮,而僅僅是替換你修改的部分,也就是上面所說的 without losing state碘勉。
用一張圖來感受一下:
其實(shí)官方(點(diǎn)這里)已經(jīng)介紹的很清楚了巷挥,只是可能一些小細(xì)節(jié)得自己找一下,我在這里就記錄一下具體的使用流程吧验靡。
安裝
首先是安裝 react-hot-loader
npm install --save-dev react-hot-loader
另外 hot-loader 是基于 webpack-dev-server倍宾,所以還得安裝 webpack-dev-server
npm install --save-dev webpack-dev-server
配置
配置 webpack-dev-server
使用 react-hot-loader 時(shí),首先還是要讓 webpack-dev-server 打開胜嗓。
在根目錄新建 server.js
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怔锌,應(yīng)該把presets參數(shù)寫在 babel 的后面
loaders: ['react-hot', 'babel?presets[]=react,presets[]=es2015']
}
]
},
// 添加插件
plugins: [
new webpack.HotModuleReplacementPlugin()
]
使用
首先運(yùn)行 server.js(當(dāng)然你可以在 package.json 里面配置,使用 npm start 運(yùn)行)
node server.js
然后照常使用 webpack
webpack --display-error-details --progress --colors --watch