共计 908 个字符,预计需要花费 3 分钟才能阅读完成。
webpack 优化:
构建优化:
通过插件查看哪些环节比较慢,loader,代码压缩文件操作
- 缓存:1.cache-loader 2. UglifyJsPlugin 开启 cache
- 多核: 晋升编译速度
- 抽离:externals 2.externals 形式根底库
- 放大解决文件的数量和范畴
输入优化:
通过插件查看文件大小
- 压缩代码,缩小代码体积:生产环境配置
- tree-shaking:去掉没援用的代码
- 缓存:提取公共代码,首次加载之后,切换页面时不必反复申请。非公共代码也会比拟小
- 按需加载:首屏性能
webpack 构建流程
Webpack 的运行流程是一个串行的过程,从启动到完结会顺次执行以下流程:
- 初始化参数:从配置文件和 Shell 语句中读取与合并参数,得出最终的参数
- 开始编译:用上一步失去的参数初始化 Compiler 对象,加载所有配置的插件,执行对象的 run 办法开始执行编译
- 确定入口:依据配置中的 entry 找出所有的入口文件
- 编译模块:从入口文件登程,调用所有配置的 Loader 对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都通过了本步骤的解决
- 实现模块编译:在通过第 4 步应用 Loader 翻译完所有模块后,失去了每个模块被翻译后的最终内容以及它们之间的依赖关系
- 输入资源:依据入口和模块之间的依赖关系,组装成一个个蕴含多个模块的 Chunk,再把每个 Chunk 转换成一个独自的文件退出到输入列表,这步是能够批改输入内容的最初机会
- 输入实现:在确定好输入内容后,依据配置确定输入的门路和文件名,把文件内容写入到文件系统
在以上过程中,Webpack 会在特定的工夫点播送出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件能够调用 Webpack 提供的 API 扭转 Webpack 的运行后果。
简略说
- 初始化:启动构建,读取与合并配置参数,加载 Plugin,实例化 Compiler
- 编译:从 Entry 登程,针对每个 Module 串行调用对应的 Loader 去翻译文件的内容,再找到该 Module 依赖的 Module,递归地进行编译解决
- 输入:将编译后的 Module 组合成 Chunk,将 Chunk 转换成文件,输入到文件系统中
webpack 面试
正文完