hmr整体流程
2022-02-16 14:51:41   4  举报             
     
         
 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 条评论
 下一页
  
   
  
  
  
  
  
  
  
  
 