首页 > 其他分享 >webpack 热更新实现原理

webpack 热更新实现原理

时间:2024-08-20 17:38:22浏览次数:11  
标签:hash hot dev js webpack 更新 原理 server

修改 entry 配置

首先通过启动 webpack-dev-server 会修改 webpack.config.js 的 entry 配置,新增两个入口文件:

  • webpack-dev-server/client/index.js
  • webpack/hot/dev-server.js

webpack-dev-server/client/index.js 包含的是客户端向服务端通信的相关代码。

webpack/hot/dev-server.js 包含的是客户端进行检查和热更新的相关代码。

启动本地服务

webpack-dev-server 会启动 webpack 创建 compiler 实例,然后在本地启动两个服务:一个 express 静态资源服务,用来接收浏览器发送的资源请求和发送资源;一个 websocket 服务,用来和浏览器进行双向通信。

监听 webpack 编译

监听 webpack 的 done 钩子。当 webpack 编译结束后,会向浏览器发送通知触发 hash 和 ok 事件。

webpack 监听文件变化

使用 webpack-dev-middleware 监听本地文件的变化,如果文件发生了变化就会立刻对文件代码进行编译和打包,然后将编译后的文件写入到内存中。

浏览器接收到热更新通知

在 webpack-dev-server/client/index.js 中包含 hash 和 ok 事件。hash 事件会接收服务端发送过来的最新hash,然后通过currentHash变量保存在本地。ok 事件会触发在 webpack/hot/dev-server.js 中定义的 module.hot.check 方法进行热更新检查。

module.hot.check

首先会利用上一次更新的 hash 值向服务端发送 ajax 请求,获取 name.hash.hot-update.json 文件。该文件中包含需要热更新的模块和下次热更新的 hash 值。
然后再通过 jsonp 的方式向服务端请求 name.hash.hot-update.js 文件,该 js 文件中包含的就是变更文件编译后的模块代码。当浏览器拿到 js 文件后会立刻执行 js 文件的代码。

该 js 文件中还包含一个 webpackHotUpdate 方法,webpackHotUpdate 方法主要做三个工作:

  • 删除过期的模块和它相关依赖
  • 将新的模块添加到 modules 中
  • 通过 webpack_require 执行模块相关的代码

如果在热更新检查的过程中发生错误,导致热更新失败,最终会调用 window.location.reload 方法执行浏览器的刷新。

module.hot.accept

我们知道在 module.hot.check 方法中会通过 webpakc_require 执行更新模块相关的代码。但是执行代码的过程中并不会进行浏览器的渲染。
所以开发者应该在文件中手动添加当指定模块进行热更新后需要执行页面的代码。就是使用 module.hot.accept 方法指定模块路径和最新模块代码应用到运行环境的函数。

标签:hash,hot,dev,js,webpack,更新,原理,server
From: https://www.cnblogs.com/rocenjs/p/18369942

相关文章

  • XSS 基本概念和原理介绍
    XSS基本概念和原理介绍基本概念跨站脚本攻击XSS(CrossSiteScripting),为了不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意JavaScript代码,当用户浏览该页面时,嵌入在Web里面的JS代码会被解......
  • 2024年华为OD目录,D卷&C卷,E卷即将更新!
    序言  本专栏收录的华为OD题目都会持续优化并且持续更新最新题目,一次购买,终生享受。2024年,华为OD机试已经启用了D卷,目前D卷和C卷的题目是一样的。我身边有很多同学通过本专栏已经成功上岸华为的OD员工,有同学成功转正为华为正式员工。根据内部消息,华为OD今年可能会使用E......
  • MES模赛思软件质量工具更新
    我们刚刚发布了最新的MES模赛思工具更新。MXAM、MoRe和MQC的最新版本已经为您下载安装做好了准备。 下面列出了工具亮点的简要概述和发行说明。同时也欢迎您前往官网查看我们的新功能演示视频,我们的工程师将会为您展示与讲解最新功能。 MESModelExaminer(MXAM)v.10.2功......
  • 《深入探究 @SpringBootApplication 注解的内部原理》
    《深入探究@SpringBootApplication注解的内部原理》@SpringBootApplication注解涵盖了SpringBoot的包扫描原理、自动装配原理等众多重要原理。接下来,我们将对该注解展开深入且详尽的研究。而研究上述原理的关键,在于剖析@SpringBootApplication内部的构成结构,如下图:......
  • Mongo主从同步原理
    Mongo主从同步原理是基于复制集(replicateset).复制集是一组mongodb实例,其中一个实例为主节点,其他实例为从节点。主节点负责所有数据写操作,并将写操作的结果复制到从节点。从节点只能读取数据,不能写入数据在mongo中,主节点和从节点之间的数据同步是通过oplog(操作日志)实现的。Oplog......
  • 打气泵方案PCBA组成和运行原理
    打气泵是一种用来将气体(通常是空气)注入到物体中的装置。其运行原理可以分为以下几个步骤:压缩气体:打气泵通常通过电机或发动机驱动,将气体(一般是空气)抽入泵内。在泵内,气体被一个或多个叶片回转或活塞往复的运动压缩。建立压力:通过压缩,气体的体积减小,压力增加。当气体......
  • 【持续更新】驱动人生海外中文专业版Driver Talent Pro8.1.11.54在线版/网卡版最新免
    在全新安装Windows系统后,可能会遇到令人尴尬的情况——没有网络连接,也没有驱动程序。如何才能快速获取合适的驱动,尤其是为您的有线或无线网卡?您需要的是能够智能且自动下载及安装网络驱动的解决方案,而非手动操作。此外,您还希望能够检测并处理过时、缺失或损坏的驱动(不仅限......
  • 多重示例详细说明Eureka原理实践
    Eureka原理(EurekaPrinciple)是指在长时间的思考和积累之后,通过偶然的瞬间获得灵感或发现解决问题的方法的一种认知现象。这个过程通常包括三个主要阶段:准备阶段、潜伏期以及突然的灵感爆发。下面详细说明Eureka原理的实践步骤:1.准备阶段广泛阅读与研究:在这个阶段,研究者需......
  • windows强制更新怎么办,有什么可以关闭windows更新的方法吗
    关闭电脑系统更新的方法主要取决于操作系统类型(如Windows10/11)。以下是Windows系统中关闭系统更新的几种常用方法:使用系统设置关闭自动更新步骤:点击开始菜单,在搜索栏中输入“设置”,并打开设置窗口。在设置窗口中,找到“更新和安全”选项,点击进入。在“Windows更新”选项......
  • 国产GD32单片机开发入门(一) GD32F103C8T6开发板电路原理图分析
    文章目录一.概要二.技术名词解释三.板子主要电子器件四.原理图电路分析1.原理图总览2.电源电路1)5V电路2)3.3V电路3.LED指示灯电路4.复位电路5.晶振电路1)高频晶振电路2)低频晶振电路6.调试下载电路1)调试电路(SWD接线方式)2)BOOT电路7.外围接口电路8.模块拓展接口9......