webpack之Tree shaking(摇树优化)

本文深入探讨了Tree Shaking的概念及其实现原理,解释了如何通过Webpack和Babel配置来优化项目体积,强调了ES6模块语法对于实现Tree Shaking的重要性,并讨论了副作用对Tree Shaking的影响。

概念:

tree shaking就是只把用到的方法打入bundle,没有使用到的方法会在uglify阶段被擦除掉,这样得以优化项目体积。

使用:

  • webpack默认支持,在.babelrc里面设置moudules:false即可( 如果你要把es6转成es5,同时又要开启tree shaking,需要在.babelrc里面设置modules:false,不然babel默认会把es6转成commonjs规范写法,这样就不能进行tree shaking了。)
  • mode:production 的情况下默认开启

要求:

必须是es6的语法(import导入),cjs的方式不支持(require等)

原理:(利用es6模块的特点)

        只能作为模块顶层的语句出现

        import的模块名只能是字符串常量

        import binding是immutable的

注意:

编写的模块代码不能有副作用,如果有副作用的话,Tree shaking也会失效

 副作用这个概念来源于函数式编程(FP),纯函数是没有副作用的,也不依赖外界环境或者改变外界环境。纯函数的概念是:接受相同的输入,任何情况下输出都是一样的。

非纯函数存在副作用,副作用就是:相同的输入,输出不一定相同。或者这个函数会影响到外部变量、外部环境。

函数如果调用了全局对象或者改变函数外部变量,则说明这个函数有副作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值