hmr整体流程
2022-02-16 14:51:41 3 举报
hmr整体流程
作者其他创作
大纲/内容
Server
重新读取配置文件,从头开始编译
从该dep对应模块的importers中新增当前模块
新的 bundle
编译后改变的模块
N
遍历结束
是否有热更新边界
旧 deps 是有该dep
是否为配置文件等需要重新启动编译的文件
Dev Server
根据文件名,在模块图中查找
更新列表是否为空
页面刷新
新 deps 是否有该dep
更新该模块的 dep
加入到此次更新列表
Bundler引擎
继续遍历该importer的importer
遍历旧 deps 对于每个 dep :
请求主页
HMR Client
文件监听器监听到文件修改
HTML中间件注入hmr client等待编译完成,注入编译产物
从该dep对应模块的importers中去掉当前模块如果importers为0. 则删除该模块
遍历新 deps 对于每个 dep :
Y
通知浏览器,重新请求模块
更新Module Map调用用户定义的accept()
获取到新的模块
增量编译
设置缓存逻辑对 external import 不设置缓存对 bundle 设置强缓存
请求新的模块
hmr 收到更新消息
该importer是否调用accept函数
遍历这次更新中全部模块
遍历每一个更新模块,对于每一个模块的 importers
调用构建引擎的update方法
调度本次更新
是否对应module
重新编译
Module
0 条评论
下一页