对话尤雨溪

vue3.0发布

Posted by XX on September 22, 2020

体验 vue3 的三种姿势 Composition Api Fragment Teleport suspense 尺寸 内部架构 响应式系统独立 自定义渲染器 api 体验 vue3 的三种姿势:

vue-cli 官方的 webpack-preview vite Vite:

大致的原理就是拦截 import 发出的 http 请求,返回浏览器的代码,也保留了 import 语法,让浏览器自己去处理依赖 script type module 支持 import;

让浏览器处理 es6 import 的活,好处就是当前页面引用多少,编译多少,项目越大优势越大。 性能:

vue2 初始化 所有的数据都要走 defineProperty ;

vue3 用 proxy 动态的决定返回什么 做了拦截,初始工作量减少 组件实例化的提升还是明显,首次 mount 一会代码看看。 vdom 重写: vue3 设计了 block 的概念,update 只和动态内容强相关,和静态内容解耦了,大部分项目静态节点比你想象的多

Composition

其实 Vue2 现在就有一个全局的方法,方法叫做 Vue.observable。

这个其实就是跟 Vue3 的这个 reactive,是一样的。 reactive 负责对象等负责数据,ref 负责基本数据变成响应式 比如数字和字符串,effect 负责副作用。

这三个概念就是响应式的核心,而且 ref 和 reactive 还有一点点小区别。

reactive 直接遍历对象+Proxy, ref 其实也可以用 reactive 实现,不过 ref 只用到了 valute 属性。

所以完全可以使用 get 和 set 来实现依赖收集和通知,有更好的性能。

而且如果数据是深层嵌套的,Proxy 只会在获取数据的时候,才回去递归的用 proxy;