码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • webpack的热重载/热更新HMR是如何实现的


    概念

    关键词:热更新/热重载/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

  • 相关阅读:
    即时通讯开发长连接网关技术:WebSocket实时推送网关技术
    redis安装、redis 普通用户启动
    基于STM32+华为云IOT设计的火灾感知系统
    C++11并发编程-线程的启用与销毁
    Python进阶(五)-图形界面编程Tkinter(5)
    [极客大挑战 2019]Knife
    算法 - 磁盘容量排序
    教你面试的时候如何迅速完成90%以上的海量数据处理题
    怎么归纳递归数列的通项表达式?
    js异步控制器,实现异步同步代码交替穿插执行
  • 原文地址:https://blog.csdn.net/weixin_43972437/article/details/127492098
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号