
Vue源码
文章平均质量分 75
heiheiheiheiheiheii
这个作者很懒,什么都没留下…
展开
-
vue源码--$set/$delete
$set用法set 是全局 Vue.set 的别名。set(target, propertyName/index, value)作用Vue 中对于对象新增的属性或者是数组新增的下标都是不能够监听到的,为了保障新的属性同样是响应式的,且触发视图更新,需要借助 this.$set 来新增属性。对象不能是 Vue 实例或者是 Vue 实例的根数据对象。原理// src/core/observer/index.jsfunction set (target: Array<any> |原创 2022-04-25 22:46:55 · 266 阅读 · 0 评论 -
Vue源码---$nextTick
$nextTickvm.$nextTick(callback)用法在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后使用它,然后等待 DOM 更新。2.1.0 ,如果没有提供回调且在支持 promise 的环境中,则返回一个 promise。原理Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化,Vue 会开启一个事件队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到事件循环队列中一次。在缓冲时去除重复数据对于避免不必要的计算和原创 2022-04-24 22:44:36 · 645 阅读 · 0 评论 -
Vue 模版编译
模版编译如何识别用户自己定义的模版,也就是 标签中类似于原生 HTML,还会有一些变量插值,或一些 Vue 指令,如 v-on、v-if 等。这些不属于元素的语法,归功于 Vue 的模版编译。把原生 HTML 提取出来,把非原生 HTML 找出来,经过一系列的逻辑处理生成渲染函数,也就是 render 函数。抽象语法树 AST如何将 template 中的一堆字符串解析为元素标签、属性、变量。需要借助抽象语法树.模版解析阶段:使用正则的方式解析成抽象语法树 AST。优化阶段:遍历 AS原创 2022-04-23 22:35:36 · 1403 阅读 · 0 评论 -
vue--虚拟DOM
虚拟 DOM虚拟DOM是什么?虚拟 DOM 就是用一个 JS 对象来描述一个 DOM 节点。<div class="a" id="b">我是内容</div>{ tag: 'div', attrs: { class: 'a', id: 'b' }, text: '我是内容', children: []}Vue为什么采用虚拟DOM,而不直接操作真实DOM呢?Vue是数据驱动视图,数据发生变化视图就原创 2022-04-22 21:50:35 · 460 阅读 · 0 评论 -
Vue响应式原理
响应式原理口述Vue 的响应式是通过 Object.defineProperty 进行数据劫持 + 发布订阅模式 进行依赖收集及更新实现响应式。通过递归的形式将 data 数据(函数/对象)将数据变为可监测的,在 new Vue 初始化 Vue 实例的时候,通过创建一个 Watcher 实例(依赖),进行解析模版中(template)用到的数据,会触发 getter ,每一个对象里面都通过闭包的形式保存一个 Dep 实例(依赖收集者), Dep 会去收集全局的 Watcher 实例,这样就可以在数据改原创 2022-04-21 18:34:42 · 1434 阅读 · 0 评论