标签(空格分隔): vue 前端
[toc]
前言
为了更好地理解 vue3,阅读其源码是一个重要的途径,但是单纯阅读源码可能理解不了作者为什么这样写,因此自己根据 API 来实现一遍然后再与源码作对比,可以更深刻理解 vue3 的实现原理。
该部分源码复写,可看Vue 3 核心原理 -- reactivity 源码复写
自己实现一遍
自己实现前,需要了解一下 vue3 的 API 以及大概的实现原理,可参考以下文章:
Vue3 Composition API RFC
Vue 3 源码导读
"Vue3 中的数据侦测"
es6 proxy
vue 3 一个简单的例子如下
vue 3 使用以上 API 设计的一大原因就是让业务代码可以更加高内聚低耦合,还有其他原因可以参考 API RFC。
根据以上 API ,开始动手写
ref
ref 与 reactive 两个函数都是用于监听数据修改,实现数据绑定的。 两者的区别在于 ref 是用于监听原始值的。 因为 js 原始值不能引用内存地址,就算修改了也无从知晓,因而可以将其包装成一个对象,这样就可以获取到这个变量的引用,监听修改。 ref 只有一个 value 属性。
已知使用 ref 监听变量修改,使用 watch 订阅通知。
// 以下按序号阅读,可以复制全部运行。
// 4.2 新建一个保存订阅的 WeakMap
发表评论 (审核通过后显示评论):