为了账号安全,请及时绑定邮箱和手机立即绑定

前端体验优化tree-shaking

标签:
Html5

tree-shaking介绍

Tree-shaking 字面意思就是 摇晃树, 其实就是去除那些引用的但却没有使用的代码

前提

想要代码配置tree-shaking,必须采用es6的模块语法,因为es6的模块采用的是静态分析,也就是从字面量对代码进行分析。之前的require是动态分析,必须代码执行到才知道引用的什么模块。

设置方式

  • 一、.babelrc 中添加
 "presets": [
    [
      "es2015", {
        "modules": false,
      }
    ],
    "stage-2"
  ],

或者在babel loader中的options里面添加同样的代码。
这个设置的作用是表示不对es6进行处理。

一定要注意是配置es2015的选项,而不是env之类的,否则没有用。

  • 二、使用uglifyjs-webpack-plugin,使用时非常简单
plugins: [
    new UglifyJsPlugin(),
...
]

效果

最大代码文件app.js代码大小需要由82k压缩到74k,压缩比例为12%。
gzip 之后由28k减少为27k

注意:

  • 网上那些乱七八糟的插件一点用没有,例如webpack-deep-scope-plugin。
  • 尽量不要在自己项目的package.json中添加"sideEffects": false

sideEffects: false 的意思并不是我这个模块真的没有副作用(一个函数会、或者可能会对函数外部变量产生影响的行为),而只是为了在摇树时告诉 webpack:我这个包在设计的时候就是期望没有副作用的,即使他打完包后是有副作用的,webpack 同学你摇树时放心的当成无副作用包摇就好啦!显然在不能确保的情况下,很容易就把项目摇挂了,所以要慎用!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
9109
获赞与收藏
2572

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消