Scope Hoisting(范围提升)

  1. 什么是Scope Hoisting呢?

    1. Scope Hoisting从webpack3开始增加的一个新功能;
    2. 功能是对作用域进行提升,并且让webpack打包后的代码更小、运行更快;
  2. 默认情况下webpack打包会有很多的函数作用域,包括一些(比如最外层的)IIFE:
    1. 无论是从最开始的代码运行,还是加载一个模块,都需要执行一系列的函数;
    2. Scope Hoisting可以将函数合并到一个模块中来运行;
  3. 使用Scope Hoisting非常的简单,webpack已经内置了对应的模块:
    1. 在production模式下,默认这个模块就会启用;
    2. 在development模式下,我们需要自己来打开该模块;

举个例子说明下:
如果文件a导出了字符串a,index.js引入了a,并且console.log(字符串a),那么如果没有开启scope hosting,打包出来的结果是:
在modules数组中,有一个对象元素,key为a模块路径,value为一个函数,函数内部包含了a模块的内容;然后还有一个index.js模块,根据引用关系去找到modules中的a模块,然后加载进来。相当于打包后,a模块的内容都被打包进去了。
但其实,我只是在index.js中使用了一下a模块的导出结果,也就是字符串a,那么我只要把index.js中用到a的地方替换成字符串’a’就可以了,没必要把整个a模块都打包进来。scope hosting就是用来做到这一点的。


Scope Hoisting(范围提升)相关推荐

  1. webpack 的 scope hoisting 是什么?

    原文链接:https://ssshooter.com/2019-02... scope hoisting 是 webpack3 的新功能,直译过来就是「作用域提升」.熟悉 JavaScript 都应该 ...

  2. webpack构建中tree shaking、scope Hoisting(面试题)

    一.tree shaking (摇树优化) tree shaking概念: 1个模块可能有多个方法,只要其中某个方法使用了,整个文件会被打到bundle中 tree shaking 只将用到的方法打到 ...

  3. webpack之Scope Hoisting

    我们先来简单分析一下:(没有开启Scope Hoisting ) 现象:构建后的代码存在大量的闭包代码 [(function (module, __webpack_exports__, __webpa ...

  4. Webpack之Tree Shaking与Scope Hoisting

    Webpack之Tree Shaking与Scope Hoisting 一.Tree Shaking 二.webpack中使用Tree-shanking 三.Scope Hoisting 一.Tree ...

  5. wepack scope hoisting

    背景 有一次在使用webpack构建组件项目时,需要动态指定publicpath,类似如下的代码: 构建后,在运行态下,发现模块A中,并没有应用动态指定的publicPath.查看了构建后的资源: 可 ...

  6. webpack5 基础配置(性能优化)12 DLL Terser Scope Hoisting

    认识DLL库(了解) DLL全称是 动态链接库,是为软件在winodw种实现共享函数库的一种实现方式,而Webpack也内置了DLL的功能,为的就是可以共享,不经常改变的代码,抽成一个共享的库.这个库 ...

  7. 浅聊JavaScript中的Hoisting(变量提升)

    一直有写博客的想法但因为懒惰等各种情况没有付出实际行动,择日不如撞日,那就今天让我给大家简单归纳总结一下JavaScript中的Hoisting(变量提升)吧! 1.对于变量 //variablesc ...

  8. JavaScript 中的 Hoisting (变量提升和函数声明提升)

    如何将 函数声明 / 变量 "移动" 到作用域的顶部. 术语 Hoisting(提升) 在很多 JavaScript 博文中被用来解释标识符的解析.其实 Hoisting(提升) ...

  9. 46 webpack优化- Scope Hoisting

    Scope Hoisting Webpack构建出来的文件源码,比如演练是实战中的build.js里面的内容里面包含了大量的函数声明语句,其原因是项目中引用了许多模块,每一个模块都有自己的作用域,导致 ...

最新文章

  1. Debian+Pure-ftpd+MySQL+User manager for PureFTPd
  2. android sdk 源码解析
  3. 服务发现系统etcd介绍
  4. public static float CompareExchange(ref float location1,float value,float comparand)
  5. 音视频技术开发周刊 | 155
  6. Oracle入门(十二E)之视图操作
  7. 2017年高考改革地区:浙江、上海
  8. DRILLNET 2.0------第二十章 高温高压钻井水力计算模型
  9. websocket 聊天室 demo ( tornado + nginx + wss + 在线demo)
  10. Meshing Tutorials(网格划分教程)
  11. Juce-强大的开源类库
  12. 史上最全面的C语言的学习路线及方法
  13. linux触摸屏校准命令,Linux 触摸屏校准
  14. 使用Power Automate (MS Flow) 发送审批邮件
  15. Python判断是否为回文数的方法
  16. 美国近年来推进“新基建”的布局及启示
  17. 计算机最低配置有哪些,win10对电脑配置有哪些要求?win10最低配置要求
  18. 一切都显得那么苍白无力
  19. 阿里云短信 签名 模板编写
  20. lineWithFocusChart(python - nvd3)

热门文章

  1. 机器学习在自动驾驶中的应用-以百度阿波罗平台为例【上】
  2. 医疗革命:ChatGPT 在医学和健康领域的应用
  3. 织梦cms--dedecms学习重要资料
  4. Unity ParticleSystem用OnParticleTrigger制作简易炮弹触发爆炸效果
  5. revit二次开发——过滤器
  6. Spring AOP 切点表达式args与@args区别
  7. SQLServer安全与权限之学习
  8. sentinel 热点限流
  9. 快速排序之JavaScript版
  10. 纯css实现的流星雨的效果