自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(3)
  • 收藏
  • 关注

原创 compile源码解析

function Compile(el, vm) { this.$vm = vm; //this Compile的实例 $vm 是MVVM的实例 (vm) // el == "#app" 判断当前用户传递的el属性是元素节点还是选择器,如果是元素节点则直接保存到$el中通, //如果不是 则根据选择器 去查找对应的元素 然后保存 this.$el = this.isElementNode(el) ? el : document.querySelector(el);

2021-05-05 21:40:00 99

原创 Watcher源码解析

Dep用于依赖收集和派发更新,它收集所有的订阅者,当有数据变动的时候,它会把消息通知到所有的订阅者,同时它也调用Watcher实列中的update方法,用于派发更新。 Watcher 用于初始化数据的watcher的实列。它原型上有一个update方法,用于派发更新。比如调用回调函数来更新页面等操作。 function Watcher (obj, expOrFn, cb) { this.obj = obj; this.expOrFn = expOrFn; this.cb = cb; // 如

2021-05-05 21:32:41 97

原创 observer源码解析

Observer在MVVM中实现劫持的原理 在Observer源码部分主要有三个部分:Observer、Dep、Watcher。 实现observer 我们将要observe的对象,通过递归,将它所有的属性,包括子属性的属性,都给加上set和get。这样的话,给这个对象的某个属性赋值,就会触发set。 export default class Observer{ constructor(value) { this.value = value this.walk(value) } //递归。。让每个

2021-05-05 21:20:20 136 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除