特性
Vue3 中的 Tee Shaking 是一种优化技术,专业叫 Dead code elimination ,通过清除未使用的代码来减少最终生成的代码体积(优化项目打包),从而提高应用的性能。
举例
在 Vue2 中,无论使用什么功能,最终都会出现在生产代码中。主要原因是 Vue 实例在项目中是单例的,捆绑程序无法检测到该对象的哪些属性在代码中被使用到。
Vue2例:
import Vue from 'vue';
Vue.nextTick(()=>{});
在 Vue3 源码引入 tree shaking 特性,将全局 API 进行分块,如果你不用其它功能,它们将不会包含在基础包中。
Vue3例:
import { nextTick, observable } from "vue";
nextTick(() => {});
Tree Shaking 如何做的?
Tree Shaking 是基于 ES6 模板语法(import 和 exports),主要是借助 ES6 模板的静态编译思想,在编译时就能确定模块的依赖关系,以及输入和输出的变量。
Tree Shaking 在编译阶段利用 ES6 Module 做了两件事:
- 判断哪些模块已经加载;
- 判断哪些模块和变量未被使用/引用,进而删除对应代码;
Tree Shaking的作用
- 减少程序的体积
- 减少程序执行时间
- 便于将来对程序架构进行优化
通俗讲 Tree Shaking
就是在保持代码运行结果不变的前提下,去除无用的代码;如果把代码打包比作制作蛋糕,传统方式是把鸡蛋带壳全部丢进去搅拌,然后放入烤箱,最后把没用的带壳全部挑选并剔除出去,而 tree shaking 则是一开始就把有用的蛋白蛋黄放入搅拌,最后直接制作出蛋糕,也就是说,tree shaking 其实是找出使用的代码。