fe_interview icon indicating copy to clipboard operation
fe_interview copied to clipboard

webpack HMR 原理解析

Open Cosen95 opened this issue 4 years ago • 1 comments

Cosen95 avatar Mar 04 '20 04:03 Cosen95

先来看下热更新的完整流程: 对应模块分别是:

  • Webpack Compiler:将 JS 编译成 Bundle
  • HMR Server:将热更新的文件输出给 HMR Runtime
  • Bundle Server:提供文件在浏览器的访问
  • HMR Runtime:会被注入到浏览器,更新文件的变化
  • bundle.js:构建输出的文件

首先初次构建时对应上图的流程是:

1 > 2 > A > B

文件发生改变(对应热更新)的流程是:

1 > 2 > 3 > 4 > 5

总结一下就是:

  • 文件发生改动
  • 文件系统接收更改并通知 webpack
  • webpack 重新编译,并通知 HMR 服务器进行更新
  • HMR Server 使用 websocket 通知 HMR Runtime 需要更新模块信息
  • HMR Runtime 去局部更新页面代码

Cosen95 avatar Jul 12 '20 02:07 Cosen95