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

  • 相关阅读:
    Ubuntu mongodb 安装和配置
    最基本的SQL语法/语句
    Sphinx学习之sphinx的安装篇
    六关节机器人的雅可比矩阵及微分运算
    六关节机器人的逆运动学计算
    六关节机器人的正运动学计算
    六关节机器人末端的微分运动
    Python3 升级pip
    一般多项式曲线的最小二乘回归(Linear Regression)
    关于卡尔曼滤波(Kalman Filter)的很好讲解
  • 原文地址:https://www.cnblogs.com/typeof/p/12297478.html
Copyright © 2011-2022 走看看