欢迎光临散文网 会员登陆 & 注册

快速了解vue3.0新特性

2020-06-15 12:38 作者:Alice铛铛铛  | 我要投稿

场景:vue3.0源码已经发布了半年了,尤雨溪大大最近也频繁开课更新进展,虽然公司项目里面引入3.0还需要一段时间的沉淀,但是不妨碍我们可以大致了解下3.0的新特性和修改

主要参考的相关链接:

// Composition API详情:

'https://composition-api.vuejs.org/api.html#advanced-reactivity-apis' 

// monorepo结构介绍

'https://trunkbaseddevelopment.com/monorepos/' 

// 用户意见收集RFC

'https://github.com/vuejs/rfcs/blob/function-apis/active-rfcs/0000-function-api.md' 

// vue3.0源码的github地址 

'https://github.com/vuejs/vue-next' 

// 尤雨溪4.21B站直播ppt 

'https://juejin.im/post/5e9f6b3251882573a855cd52' 

// 尤雨溪5.28发布微博 

'https://increment.com/frontend/making-vue-3/' 

// 尤雨溪6.4直播ppt 

'https://mp.weixin.qq.com/s?__biz=MzA4MDU1MDExMg==&mid=2247483829&idx=1&sn=75ef516c9174cda030db48d4ab5722e3&chksm=9fa3c03aa8d4492c5d49866df093f61aeb3f8484bf6b75ad87a63d207cfdc3d18910fe42702f&token=454539811&lang=zh_CN#rd' 

// 阮一峰的ES6 

'https://es6.ruanyifeng.com/#docs/proxy'

总结:从6个方面抛出新特性,感兴趣的小伙伴自己去找源码深入~

本文内容目录

1、双向绑定

2.0现有限制:

    1、无法检测到新的属性添加/删除 

    2、无法监听数组的变化 

    3、需要深度遍历,浪费内存

3.0优化:

    1、允许框架拦截对象上的操作 

    2、Proxy默认可以支持数组 

    3、多层对象嵌套,使用懒代理

【注意:要看这部分源码,先保证对阮一峰的ES6博客中Proxy、Reflect、Set和Map有一定程度的了解】

核心:主要通过函数reactive()给对象新增一个Proxy对象监听内部的属性来实现数据监听,部分源码如下

reactive()函数部分源码

解析:通过observed = new Proxy(target, handle);给每一个传入的target对象包一个Proxy对象,有操作时触发handle方法;

其中let toProxy = new WeakMap(),WeakMap是弱引用,key为对象,用于缓存代理的target,let toRaw = new WeakMap(),用于缓存observed,避免重复代理;

handle方法中有get()和set(),在get()中执行track()依赖收集,在set()中执行trigger()触发更新。

2、虚拟DOM

2.0VDOM性能瓶颈: 

    1、虽然vue能够保证触发更新的组件最小化,但单个组件部分变化需要遍历该组件的整个vdom树 

    2、传统vdom性能跟模版大小正相关,跟动态节点的数量无关

3.0优化工作 

    1、将AST基于动态节点指令(if,for,slot)切割为嵌套的区块 

    2、主动检测模版中的静态节点 

    3、给元素一个追踪标记,无论层级嵌套多深,更新时可以直接遍历动态节点

3.0的新策略将vdom更新性能与模版大小解耦,变为与动态节点的数量相关,整体比vue2性能提升2~5倍。

3、Tree-Shaking

2.0现有限制: 并不是每个人都使用框架的所有功能,但仍需下载/解析相应代码

3.0优化:将大多数全局API和内部组件移至ES模块导出,tree-shaking更友好

4月份的数据显示,vue2.0的运行时大小是22.5kb,3.0在13.5kb。

4、Composition API

// Composition API详情:

'https://composition-api.vuejs.org/api.html#advanced-reactivity-apis'

这部分内容实在太多,给一个网站大家可以自己去查看~

5、使用TS

整个3.0的源码都是用ts重构的,TypeScript的好处是有类型检查~

6、内部模块解耦

神奇的monorepo结构

// monorepo结构介绍

'https://trunkbaseddevelopment.com/monorepos/'



快速了解vue3.0新特性的评论 (共 条)

分享到微博请遵守国家法律