webpack提升打包构建速度(hmr/热模块替换)

一、 场景

开发时我们修改了其中一个模块代码,Webpack 默认会将所有模块全部重新打包编译,速度很慢。

所以我们需要做到修改某个模块代码就只有这个模块代码需要重新打包编译,其他模块不变,这样打包速度就能很快

这个就需要在webpack.config.js中配置一下hmr热模块替换

二、什么是HotModuleReplacement

HotModuleReplacement(简称HMR)是Webpack提供的一个功能,它可以在不刷新页面的情况下,实现局部模块的热更新。也就是说,当你修改了一个模块的代码后,HMR会自动将修改的部分更新到浏览器中,而不会重新加载整个页面。

HMR的实现原理是通过WebSocket连接服务器,实时监听文件变化,然后动态更新模块。对于一些纯数据的模块,Webpack会使用热替换(Hot Replacement)技术,替换旧模块。

使用HMR可以提高开发效率和调试体验。在开发过程中,只需修改特定的代码,即可实时保存并查看修改结果,无需手动刷新浏览器。同时,HMR也避免了页面重新加载,减少了开发时间和流量消耗。

三、配置使用

在开发环境下将devServer的hot配置成true就行了

module.exports = {
  // 其他省略
  devServer: {
    host: "localhost", // 启动服务器域名
    port: "3000", // 启动服务器端口号
    open: true, // 是否自动打开浏览器
    hot: true, // 开启HMR功能(只能用于开发环境,生产环境不需要了)
  },
};

此时 css 样式经过 style-loader 处理,已经具备 HMR 功能了。 但是 js 还不行。

js需要到main.js中配置,如下:

if (module.hot) {
  module.hot.accept('./library.js', function() {
    // 对更新过的 library 模块做些事情...
  });
}

// or
if (import.meta.webpackHot) {
  import.meta.webpackHot.accept('./library.js', function () {
    // Do something with the updated library module…
  });
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieyucx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值