vue3.0新特性学习笔记1(基本特性)

vue3.0的设计目标

更小
更快
加强TypeScript支持
加强API设计一致性
提高自身可维护性
开放更多底层功能

]######1.性能方面的优化

双向响应原理由Object.defineProperty改为基于ES6的Proxy,速度更快,且消除了之前存在的警告;
重写了 Vdom ,突破了 Vdom 的性能瓶颈
进行了模板编译的优化
进行了更加高效的组件初始化
vue3.0将 vdom 更新性能由与模版整体大小相关提升为与动态内容的数量相关

之前vue2中的 Object.defineProperty存在兼容性问题,所以只能兼容到ie8。

而且Object.defineProperty是一个相对比较昂贵的操作,因为它直接操作对象的属性,颗粒度比较小。将它替换为es6的Proxy,在目标对象之上架了一层拦截,代理的是对象而不是对象的属性。这样可以将原本对对象属性的操作变为对整个对象的操作,颗粒度变大。

javascript引擎在解析的时候希望对象的结构越稳定越好,如果对象一直在变,可优化性降低,proxy不需要对原始对象做太多操作。

2.Tree-Shaking

缩小vue3的体积,将一些不需要的内容去除。只有需要的内容才会打入包中。
优化后的 Vue3.0 的打包体积只有原来的一半(13kb)。哪怕把所有的功能都引入进来也只有23kb,依然比 Vue2.x 更小。像 keep-alivetransition 甚至 v-for 等功能都可以按需引入。

3.Fragments

不再限制 template 只有一个根节点。
类似于react的空节点。

4.更好的typeScript支持
5.组合式api

1️⃣setup()
vue3.0将组件的逻辑都写在了函数内部,setup()会取代vue2.x的data()函数,返回一个对象,暴露给模板,而且只在初始化的时候调用一次,因为值可以被跟踪。

2️⃣新的函数api:const count = value(0)

详细内容见 vue3.0新特性笔记3

你可能感兴趣的:(vue3.0新特性学习笔记1(基本特性))