zoukankan      html  css  js  c++  java
  • 前端基础知识学习第九节(Webpack篇)

    1.

      babel的stage都有哪些值,分别代表什么含义?

      答案:
      我们在日常的开发中会用babel把ES6代码编译成浏览器支持的ES5代码,针对babel的一些配置在通常.babelrc文件中,其中有一个配置选项就是"stage-0"、
      "stage-1"、"stage-2"、"stage-3",他们分别代表的含义是:
      "stage-0": 包含了"stage-1" "stage-2" "stage-3"的所有功能同时还另外支持两个插件 transform-do-expressions和transform-function-bind
      "stage-1": 包含了"stage-2" "stage-3"的所有功能
      "stage-2": 包含了"stage-3"的所有功能
      "stage-3": 支持async和await,这个功能很实用,可以让你以“同步”的思维写代码
      在实际的开发中可以根据需要来设置具体stage值,如果想使用大而全的功能就设置成"stage-0",如果想限制开发人员使用比较新的功能则可以设置成其他stage值,
      以上的设置只是针对babel 7.0以前版本,根据官方最新版本7.0的说明,已经废弃了stage的预设
      参考:https://babeljs.io/blog/2018/07/27/removing-babels-stage-presets

    2.

      webpack hot reload实现原理?

      答案:
      1)webpack编译期,为需要热更新的entry注入热更新代码(EventSource通信)
      2)页面首次打开后,服务端与客户端通过EventSource建立通信渠道,把下一次的hash返回给客户端
      3)客户端获取到hash,这个hash将作为下一次请求服务端hot-update.js和hot-update.json的hash
      4)修改页面代码后,webpack监听到文件修改,开始编译,编译完成后,发送build消息给客户端
      5)客户端使用hash向服务端发送ajax请求获取hot-update.json,发送GET请求获取hot-update.js
      6)hot-update.js插入成功后,执行hotAPI的createRecord和reload方法,获取到Vue组件的render方法,重新render组件,实现UI自动更新
      参考:https://www.jianshu.com/p/652fbae768bf

    3.

      webpack打包慢如何优化?

      答案:
      1)对公共库文件(Vue、React、React-dom、Axios等)放到CDN服务器,通过script标签单独引用,不通过Webpack进行打包,然后在Webpack
      配置里使用expose-loader、externals、ProvidePlugin提供给模块内部使用相应的变量
      use: [
        {
          loader: 'expose-loader',
          options: 'Vue'
        }
      ]
      externals: {
        Vue: 'Vue'
      }
      new webpack.ProvidePlugin({
        Vue: 'Vue'
      })
      2)使用DllPlugin和DllReferencePlugin,这种方式其实和externals是类似的,主要用于有些模块没有CDN资源可以通过<script>引用的情况,Dll是
      动态链接库的意思,实际上就是将这些npm打包生成一个JSON文件,这个文件里包含了npm包的路径对应信息,这两个插件要一起使用
      3)提取公共代码,使用CommonsChunkPlugin提取公共的模块,可以减少文件体积,也有助于浏览器缓存
      4)使用HappyPack来加速构建,HappyPack会采用多进程去打包构建,使用方式还是蛮简单的,但并不是支持所有loader

  • 相关阅读:
    应对https协议的下载方式
    订单峰值激增 230%,Serverless 如何为世纪联华降本超 40%?|双11 云原生实践
    阿里云函数计算发布新功能,支持容器镜像,加速应用 Serverless 进程
    专访阿里云 Serverless 负责人:无服务器不会让后端失业
    从零入门 Serverless | SAE 的远程调试和云端联调
    我在阿里巴巴做 Serverless 云开发平台
    高德最佳实践:Serverless 规模化落地有哪些价值?
    [图论总结1]最大独立集(例题:Code Names)
    Excel导入SQL工具【3.02】
    学习笔记助手【2.01】base1 更新
  • 原文地址:https://www.cnblogs.com/typeof/p/12297478.html
Copyright © 2011-2022 走看看