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