概念

关键词:热更新/热重载/HMR(Hot Module Replacement)
效果:浏览器的无刷新更新,允许在运行时替换,添加,删除各种模块,而无需进行完全刷新重新加载整个页面
目的:加快开发速度,所以只适用于开发环境下使用

疑惑

平时使用HMR的时候,我都会有这样的疑惑?

  1. webpack 会将不同的模块打包成不同 bundle 或 chunk 文件, 但是在使用 webpack 进行 dev 模式开发的时候,我并没有在我的 dist 目录中找到 webpack 打包好的文件,它们去哪了呢?
  2. 这些文件是怎么替换的?

核心原理

  1. 使用 webpack-dev-server (后面简称 WDS)托管静态资源,同时以 Runtime 方式注入 HMR 客户端代码
  2. 浏览器加载页面后,与 WDS 建立 WebSocket 连接
  3. Webpack 监听到文件变化后,增量构建发生变更的模块,并通过 WebSocket 发送 hash 事件
  4. 浏览器接收到 hash 事件后,请求 manifest 资源文件,确认增量变更范围
  5. 浏览器加载发生变更的增量模块
  6. Webpack 运行时触发变更模块的 module.hot.accept 回调,执行代码变更逻辑(回调可选)

参考资料

https://www.cnblogs.com/liangyin/p/16579708.html

webpack的热重载/热更新HMR是如何实现的相关推荐

  1. VS 2019 16.11正式发布 | 新功能(Hot Reload 热重载)试用

    VS 2019 16.11 VS 2019 16.11已于2021.8.10正式发布.(https://devblogs.microsoft.com/visualstudio/visual-studi ...

  2. Swift 中的热重载

    Swift 中的热重载 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHJV1HA9-1657855879470)(https://merowing.info/202 ...

  3. vue-cli 项目热重载(热更新)失效的解决方法

    一般用vue-cli自动构建的项目是默认开启了热更新了,如果你手动修改了一些配置,是可以关闭的,比如在 vue.config.js 里面的 devServer 下可以配置 hot: false //关 ...

  4. Vite css 热重载失效

    记录一次 Vite CSS热重载失效踩坑经历 结论 文章较长,给赶时间的同学先说结论 排查自己代码和所用包代码中的document.head.innerHTML+=""代码 背景 ...

  5. ASP.NET Core 6.0对热重载的支持

    .NET 热重载技术支持将代码更改(包括对样式表的更改)实时应用到正在运行的程序中,不需要重启应用,也不会丢失应用状态. 一.整体介绍 目前 ASP.NET Core 6.0 项目都支持热重载.在以下 ...

  6. studio 热重载应用_热重载 (Hot reload)

    Flutter 的热重载功能可帮助您在无需重新启动应用程序的情况下快速.轻松地测试.构建用户界面.添加功能以及修复错误.通过将更新的源代码文件注入到正在运行的 Dart 虚拟机(VM) 来实现热重载. ...

  7. unity lua热重载,编辑器下检查lua文件的变化,前端自动热更lua代码

    FileSystemWatcher这里主要用到的一个c#系统类 https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filesystemwatc ...

  8. Golang:使用air实现gin应用的live reload热重载

    热重载 Go 应用的工具 文档 https://github.com/cosmtrek/air https://github.com/cosmtrek/air/blob/master/README-z ...

  9. 【Lua运行时热重载功能实现①】检测Lua文件发生变化

    这几天由于项目组需要一直在琢磨一个功能,就是如何在unity编辑器下不需要重启游戏就能让lua文件改动后立刻生效.如果能够实现这个功能,那会大幅提高开发效率.查了一圈,网上的结果都不太满意,要么只有理 ...

最新文章

  1. ASP.NET 2.0中轻松实现网站换肤
  2. java时间戳求时间差_时间戳换算后,截取时间相差8小时的问题
  3. 计算机网络:单播,多播
  4. mysql2012更改表名_sql alter table修改数据库的表名字
  5. 20171207L09-04老男孩Linux运维实战培训-Lamp系列-Apache服务生产实战应用
  6. Overleaf v2 评测
  7. 网线接法:交叉线、直通线的网线水晶头图解
  8. 为什么淘宝上同样的东西,专卖店比官方旗舰店便宜?
  9. 软件设计师07-程序语言基础知识
  10. 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...
  11. java基本运算方法总结(ing)
  12. matlab 车牌识别源码,车牌识别的matlab程序
  13. 关于WinPE安装操作系统
  14. Python 打怪兽游戏
  15. H5弹出是否打开微信APP的方式
  16. java条形码识别_java openCV 识别条形码
  17. 深入理解Nginx:高顿教育java开发
  18. [Java 内存]Java内存组成
  19. 北大光华管理学院公开课北京站
  20. 为什么要做巧推整站快速排名SEO优化?

热门文章

  1. python小根堆操作
  2. oracle有的表带$,Oracle Update
  3. php base64 站长工具,关键词优化难易分析_SEO优化难度分析 - 站长工具
  4. 负一屏服务端实现,精简demo源码供查阅
  5. 自定义http状态码
  6. 【为wifi上网打预防针】wifi共享精灵预防有道
  7. 基于普遍应用市场需求,有开发一系列电动牙刷专用芯片及方案
  8. R语言参数估计课后习题
  9. python中怎么输出双引号
  10. 1.6万亿参数你怕了吗?谷歌大脑发布语言模型 Switch Transformer,速度碾压T5