首页 > 作文

webpack3新增的ScopeHoisting对比介绍

更新时间:2023-04-03 10:14:03 阅读: 评论:0

Scope Hoisting 可以让 Webpack 打包出来的代码文件更小、运行的更快, 它又译作 “作用域提升”,是在 Webpack3 中新推出的功能。

对比:

util.js

export default 'Hello,Webpack'

main.js

1941年12月7日import str from './util.js';console.log(str);

打包后:

[  (function (module, __webpack_exports__, __webpack_require__) {    var __WEBPACK_IMPORTED_MODULE_0__util_js__ = __webpack_require__(1);    console.log(__WEBPACK_IMPORTED_MODULE_0__util_js__["a"]);  }),  (function (module, __webpack_exports__, __webpack_require__) {    __webpack_exports__["a"] = ('Hello,Webpack');  })]

开启Scope Hoisting 后:

[  (function (module, __webpack_exports__, __webpack_require__) {    var util = ('Hello,Webpack');    console.log(util);  })]

好处:

? 代码体电热水器质量排名积更小,因为函数申明语句会产生大量代码;
? 代码在运行时因为创阅读绘本建的函数作用域更少了,内存开销也随之变小

原理:

ES6的静态模块分析,分析出模块之间的依赖关系,尽可能地把模块放到同一个函数中。

配置:

const Webpack = require('webpack')const path = require('path')module.exports = {  entry: './index.js',  output: {    filename: 莘莘学子意思'bundle.js',    path: path.resolve(__dirname, 'dist')  },  plugins: [    new Webpack.optimize.Mod山东沂蒙学院uleConcatenationPlugin()  ]}

同时,考虑到 Scope Hoisting 依赖源码需采用 ES6 模块化语法,还需要配置 mainFields。因为大部分 Npm 中的第三方库采用了 CommonJS 语法,但部分库会同时提供 ES6 模块化的代码,为了充分发挥 Scope Hoisting 的作用,需要增加以下配置

module.exports = {  resolve: {    // 针对 Npm 中的第三方模块优先采用 jsnext:main 中指向的 ES6 模块化语法的文件    mainFields: ['jsnext:main', 'browr', 'main']  },};

对于采用了非 ES6 模块化语法的代码,Webpack 会降级处理不使用 Scope Hoisting 优化

本文发布于:2023-04-03 10:14:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/2291b87d18b0e07333469776546144ac.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:webpack3新增的ScopeHoisting对比介绍.doc

本文 PDF 下载地址:webpack3新增的ScopeHoisting对比介绍.pdf

标签:代码   语法   模块   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图