加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

性能优化篇---Webpack构建代码质量压缩

发布时间:2019-03-27 13:09:26 所属栏目:建站 来源:keywords
导读:Webpack构建速度优化基本优化完毕,接下来考虑的就是:线上代码质量的优化,即如何使用webpack构建出高质量的代码 Webpack构建流程:初始化配置参数 - 绑定事件钩子回调 - 确定Entry逐一遍历 - 使用loader编译文件 - 输出文件 提纲 本次优化构建代码质量基

接入treeShaking,剔除无用代码

  •  Tree Shaking可以用来找出有用代码,,去除JavaScript中用不上的死代码;但是它依赖于ES6静态花模块语法importexport的导入和导出
  •  webpack接入
  1.  修改.babelrc保留ES6模块话语句
  •  注意新版本babel-preset-env已经预设babel-preset-es2015,babel推荐使用babel-preset-env取代babel-preset-es2015,并且继续使用babel-preset-es2015会发出警告信息。 
  1. {  
  2.   "presets": [  
  3.     ["env", {  
  4.       "modules": false  
  5.     }]  
  6.   ],  
  7.   "plugins": ["syntax-dynamic-import"]  

性能优化篇---Webpack构建代码质量压缩

  •  webpack --display-used-exports运行构建带上--display-used-exports可追踪到Tree Shaking的工作;
  •  Webpack只能正确的分析出如何剔除死代码,需要接入UglifyJs处理剔除(配置见上)

开启Scope Hoistion

  •  scope hoisting即作用域提升;
  •  在构建过程中,webpack会借助ES6 模块化的静态特性,确定模块的依赖关系,将一个bundle中的静态依赖提升到顶部。(所以需要和接入treeShaking一样配置Babel开启ES6模块化)
  •  原理:分析模块间的依赖关系,尽可能的将零散的模块合并到一个函数中去,前提不能造成代码冗余,因此只有被引用了一次的模块才能被合并。
  •  接入好处:

        1.代码体积减少

        2.代码在运行时因为创建的函数作用域更少了,内存开销也随之变小

  •  webpack接入ModuleConcatenationPlugin内置插件 
  1. const ModuleConcatPlugin = require('webpack/lib/optimize/ModuleConcatenationPlugin');  
  2. plugins: [  
  3.      new ModuleConcatPlugin(), //开启scope Hoisting  
  4.  ], 
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读