zoukankan      html  css  js  c++  java
  • webpack热更新

    为什么要热更新

    每次改完代码都需要重新打包一次,打开浏览器,刷新一次,很麻烦 我们可以安装使用webpack的devserver来改善这块的体验。

    怎么使用热更新

    使用webpack内置HotModuleReplacementPlugin插件。按如下代码安装配置好,重新启动服务后,会发现dist目录没有了,这是因为devServer把打包后的模块不会放在dist目录下,⽽是放到内存中,从⽽提升速度。
    代码:

    module.exports = {
      ...
      devServer: {
        contentBase: "./dist",
        hot: true
      }
    }
    

    原理:

    webpack-dev-server:

    (WDS)的功能提供 bundle server的能力,就是生成的 bundle.js 文件可以通过 localhost://xxx 的方式去访问,另外 WDS 也提供 livereload(浏览器的自动刷新)。
    

    hot-module-replacement-plugin:

    HMR Server 是服务端,用来将变化的 js 模块通过 websocket 的消息通知给浏览器端。
    HMR Runtime是浏览器端,用于接受 HMR Server 传递的模块数据,浏览器端可以看到 .hot-update.json 的文件过来。
    hot-module-replacement-plugin的作用是提供 HMR 的 runtime,并且将 runtime 注入到 bundle.js 代码里面去。一旦磁盘里面的文件修改,那么 HMR server 会将有修改的 js module 信息发    送给 HMR runtime,然后 HMR runtime 去局部更新页面的代码。因此这种方式可以不用刷新浏览器。
    

    总结:

    webpack 构建出来的 bundle.js 本身是不具备热更新的能力的,HotModuleReplacementPlugin 的作用就是将 HMR runtime 注入到 bundle.js,使得bundle.js可以和HMR server建立websocket的通信连接。hot-module-replacement-plugin 包给 webpack-dev-server 提供了热更新的能力。

  • 相关阅读:
    C# TransactionScope 使用
    .Net 4.5 的async 和await 的简单理解使用
    图片的等比缩放
    IIS 8 下使用 WCF
    SQL Server 中字符串中包含字符串变量的表示方法
    jsTree 的简单用法--异步加载和刷新数据
    webService 部署以后参数输入框不能显示
    js 节点属性
    js 数组排序
    js 时间格式化 -- 时间加减实现
  • 原文地址:https://www.cnblogs.com/superlizhao/p/12713755.html
Copyright © 2011-2022 走看看