学习文章
思维导图
抓重点
服务端(启动服务会建立一个server)
- 配置了热更新之后,会new HotModuleReplacementPlugin实例进入plugin里
- 使用wepack的watch钩子监听是否改变
- 但是在devserver阶段是不会直接改变依赖内容,需要使用memory-fs这个框架去存入内存中
- 与客户端建立websocket长连接
- 当我们的代码内容改变之后,传递type:ok,在这之前会传递我们保存进内存中的hash
- 当接收到客户端请求后,会将新的模块添加到modules中,当下次调用webpack_require,获取到的就是新模块了。接着在缓存中删除过期的模块和依赖
客户端(浏览器)
- 植入runtime.js逻辑
- 接收到ok后,调用runtime里逻辑,hotDownloadManifast和hotDownloadUpdateChunk
- ajax请求更新的文件,返回对应的文件信息
- 通过jsonp请求最新的代码模块
- 更新依赖文件,删除旧的不存在的依赖文件
废话
其实一个好的机制不仅仅在这个领域有所建树,这种思维我们可以扩展到多个方面,感谢大佬文章学习,去拜源码去了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。