1、前端代码为何要进行构建和打包?
从代码角度去思考
体积更小(Tree-Shaking、压缩、合并),加载更快
提高开发效率(TS、es6、模块化、scss)
兼容性和错误检查(polyfill、postcss、eslint)
从开发角度去思考
统一、高效的开发环境
统一的构建流程和产出标准
集成公司构建规范(提测、上线等)
2、module chunk boundle 分别什么意思,有何区别?
module:是各个源码文件,webpack中皆模块
chunk:多模块合并成的文件,如entry、imoort、pslitChunk
boundle:生成的文件
3、loader和plugin的区别?
loader 模块加载器如 less->css
plugin 扩展插件,如HtmlWebpackPlugin
4、webpack如何实现懒加载?
import()
5、webpack常见性能优化?
优化构建速度(可用于生产环境中):
优化babel-loader:es6代码没有更改的就不需要重新编译
IgnorePlugin:能够使得指定目录被忽略,从而使得打包变快,文件变小
noParse:不去往文件中去寻找依赖
happyPack:开启多线程打包构建提高速度
ParallelUglifyPlugin:开启多线程构建压缩js代码等操作
优化构建速度(不可用于生产环境中):
自动刷新:刷新浏览器,更改状态
热更新:刷新浏览器,不更改状态
DllPlugin:对于vue、react这种大型库,不用重新去构建
优化产出代码:
图片base64编码
boundle + hash
懒加载
提取公共代码
使用CDN加速
IgnorePlugin
使用production
Scope Hosting
6、babel-runtime和babel-polyfill的区别?
babel-polyfill不会防止全局污染
babel-runtime可以防止全局污染
如果要使用第三方lib,要使用babel-runtime
