根据上述内容, 我们Neng出Webpack的构建流程以及HMR的实现和局限性如下:
Webpack 构建流程
- 解析配置文件Webpack先说说解析配置文件,生成Webpack配置对象。
- 读取入口文件Webpack读取入口文件,并开头构建依赖关系图。
- 构建依赖关系图Webpack根据入口文件和配置中的loader、 plugin等处理模块的依赖关系,构建出一个完整的依赖关系图。
- 对模块进行转换Webpack针对依赖关系图中的个个模块, 用loader进行转换,将非JavaScript模块转换为JavaScript模块。
- 插件处理Webpack用plugin对转换后的模块进行进一步处理, 如压缩、合并等。
- 输出到头来材料文件Webpack根据配置输出到头来的静态材料文件,如
bundle.js。
HMR 实现原理
- Socket.io传信当文件发生变来变去时Webpack Dev Server通过Socket.io与Webpack建立传信。
- 传递变来变去信息Webpack Dev Server将变来变去的信息传递给Webpack, Webpack沉新鲜构建依赖关系图,找出变来变去模块。
- 推送geng新鲜代码Webpack Dev Server将变来变去模块的信息和代码推送到客户端浏览器。
- 代码替换Webpack HMR Runtime接管代码施行周围, 将新鲜的模块插入Yi有代码中,移除老的模块。
HMR 用方法
- 在Webpack配置文件中启用
devServer的hot选项。
- 添加
webpack.HotModuleReplacementPlugin插件到plugins数组中。
HMR 局限性
- 轻巧松的代码变gengHMR适用于轻巧松的代码修改,如修改一行代码或添加模块。
- 麻烦的依赖关系变来变去对于改变依赖关系或模块接口的情况,HMR兴许无法正常干活。
- 手动刷新鲜在麻烦变geng后兴许需要手动刷新鲜浏览器来geng新鲜页面。
HMR 应用场景
- 实时预览在开发Web应用时 Neng实时查kan代码修改后的效果,搞优良开发效率。
- 飞迅速迭代加迅速应用迭代速度,适合开发动态内容丰有钱的Web应用。
HMR是Webpack给的有力巨大功Neng之一,Neng够极巨大地提升开发体验,但它的局限性也意味着在有些麻烦场景下兴许需要其他解决方案。