zoukankan      html  css  js  c++  java
  • webpack Scope Hoisting

    webpack 打包闭包优化

    现象:构建后的代码存在大量闭包代码

    会导致什么问题?

    大量函数闭包包裹代码,导致体积增大(模块越多越明显)

    运行代码时创建的函数作用域变多,内存开销变大。

    模块转换分析

    结论

    • 被 webpack 转换后的模块 会带上一层包裹
    • import 会被转换成__webpack_require

    进一步分析 webpack 的模块机制

    分析

    • 打包出来的是一个 IIFE
    • modules 是一个数组,每一项是一个模块初始化函数
    • __webpack_require 用来加载模块,返回 module.exports
    • 通过 WEBPACK_METHOD_REQUIRED(0) 启动程序

    scope hoisting

    原理

    将所有模块的代码按照引用顺序放在一个函数作用域里,然后适当的重命名一些变量以防止变量名冲突

    对比:通过 scope hoisting 可以减少函数声明代码和内存开销

    使用

    在 webpack3中,我们还要手动的去添加一个插件

    plugins: [
      new webpack.optimize.ModuleConcatenationPlugin()
    ]
    

    但是在 webpack4.0 中,webpack mode 为 production 默认开启

    必须是 ES6 语法,CJS 不支持

  • 相关阅读:
    UVA 558 Wormholes
    HDU 1565 方格取数(1)
    poj2607
    poj2552
    poj2491
    poj2502
    poj2613
    .NET Framework 4 与 .NET Framework 4 Client Profile的区别与联系
    .Net Framework 4.0 和 2.0/3.0/3.5
    企业IT系统
  • 原文地址:https://www.cnblogs.com/ssaylo/p/13677264.html
Copyright © 2011-2022 走看看