Vue关于Compute源码的学习笔记(编写中)
程序员文章站
2022-03-02 09:38:30
...
一直都在网上查阅关于Compute源码分析的文章,但是看起来都挺费劲的。以下是我的一些学习笔记:
1、初始Vue时会通过initState方法,在代码中进行opts.computed字段的判断,从而进行initComputed方法对compute进行初始化。
function Vue(){
... 其他处理
initState(this)
...解析模板,生成DOM 插入页面
}
function initState(vm) {
var opts = vm.$options;
if (opts.computed) {
initComputed(vm, opts.computed);
}
.....
}
2、initComputed源码分析
function initComputed(vm, computed) {
var watchers = vm._computedWatchers = Object.create(null);
for (var key in computed) {
var userDef = computed[key];
// Vue代码实现时compute有两种定义方法,一种是直接定义function,一种是设置get和set
// 判断是哪种,然后设置getter
var getter = typeof userDef === 'function' ? userDef: userDef.get;
// 每个 computed 都创建一个 watcher
// watcher 用来存储计算值,判断是否需要重新计算
watchers[key] =
new Watcher(vm, getter, {
// lazy表示这个 watcher 需要缓存
// 传入lazy作用是在watch中把计算结果缓存起来,而不是每次使用都要重新计算
lazy: true
});
// 判断是否有重名的属性
if (! (key in vm)) {
defineComputed(vm, key, userDef);
}
}
}
上一篇: Vue实现动态的选中状态切换效果
推荐阅读
-
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
-
学习笔记:用c语言编写泰勒展开公式myexp()实现math.h.数学函数库中的exp()函数。并与exp()函数做比较。精度相同。
-
Vue 2.0学习笔记之Vue中的computed属性
-
学习笔记编写vue的第一个程序
-
MySQL源码学习:关于慢查询日志中的Rows_examined=0
-
请查收这份学习笔记!我从Vue源码中学到的5个JavaScript技巧
-
Backbone.js框架中简单的View视图编写学习笔记_基础知识
-
Backbone.js框架中简单的View视图编写学习笔记_基础知识
-
学习了vue中数据的挂载,vue实例的编写,数据的注入,数据的响应及vue的html长久文本html解析指令和vue的样式绑定及class类的绑定,input事件在vue双向绑定并复习了es6中的原生绑定及按照触发者的形式绑定
-
Vue源码中钩子函数的学习分析