使用 react-hot-loader

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 編寫代碼時,能讓修改的部分自動刷新。但這和自動刷新網(wǎng)頁是不同的,因為 hot-loader 并不會刷新網(wǎng)頁,而僅僅是替換你修改的部分,也就是上面所說的 without losing state。

用一張圖來感受一下:

(https://upload-images.jianshu.io/upload_images/13664743-f64f4353ab987a37.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

其實官方(點這里)已經(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 時,首先還是要讓 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容