vue和react的diff算法,都是忽略跨级比较,只做同级比较。vue diff时调动patch函数,参数是vnode和oldVnode,分别代表新旧节点。 1. vue比对节点,当节点元素类型相同,但是className不同,任务是不同类型元素,删除重建,而react会认为是同类型节点,只是修改 ...
分类:
编程语言 时间:
2020-05-05 00:31:36
阅读次数:
551
在vue中,_update是最终把vnode节点渲染成真实dom的函数。 它会在首次渲染和数据更新的时候被调用。 这里主要分析首次调用时候做了什么。 _update函数在src/core/instance/lifecycle.js中定义 Vue.prototype._update = functio ...
分类:
其他好文 时间:
2020-04-21 18:23:19
阅读次数:
60
"24. 两两交换链表中的节点" 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 递归 思路: 1. 返回值:交换完成的子链表 2. 调用单元:设需要交换的两个点为 head 和 next,head 连接后面交换完成 ...
分类:
其他好文 时间:
2020-04-19 17:44:12
阅读次数:
47
虚拟DOM 虚拟DOM(下面简化称为Vnode)简而言之 ,就是用js去描述一个dom节点树,而DOM变化的对比,都放在js层来做。 传统的dom节点,是这样的 <div> <p className='text'>写个啥内容啊</p> </div>Vnode是长这样的 { nodeName:'div ...
分类:
其他好文 时间:
2020-04-14 20:40:13
阅读次数:
78
模板转换成视图的过程 在底层实现中Vue会将模板编译成渲染函数,当然我们也可以不写模板,直接写渲染函数,以获得更好的控制。 渲染函数:渲染函数是用来生成Virtual DOM的;VNode虚拟节点:vnode可以理解成dom节点的描述对象,它描述了应该怎样去创建真实的DOM节点;patch(patc ...
分类:
其他好文 时间:
2020-04-12 14:37:06
阅读次数:
93
key 是为 Vue 中 vnode 的唯一标记,通过这个 key,我们的 diff 操作可以更准确、更快速。 Vue 的 diff 过程可以概括为: oldCh 和 newCh 各有两个头尾的变量 oldStartIndex、oldEndIndex 和 newStartIndex、newEndIn ...
分类:
其他好文 时间:
2020-04-04 11:15:54
阅读次数:
439
1、定义 虚拟dom就是一个简单的对象,包含标签名(tag)、属性(attr)、子元素(children),通过js操作virtual DOM,最终映射到真实的dom上。 2、为什么要用虚拟dom: 频繁地操作dom,会造成页面的回流和重绘,增加性能开销,降低页面的渲染速度。 把dom的操作放到js ...
分类:
其他好文 时间:
2020-04-03 23:30:09
阅读次数:
112
测试例子 主要函数定义 716:Dep 发布者定义 767:Vnode 虚拟节点定义 922:Observer 劫持数据的函数定义 4419:Watcher 订阅者定义 5073:function Vue() 定义 数据劫持过程 Vue.prototype._init 中,在 后和 之前调用 ini ...
分类:
其他好文 时间:
2020-03-21 21:15:36
阅读次数:
57
替换单令牌体系结构集群中的死节点 替换单令牌体系结构群集中的节点而不是vnode的步骤。 警告:仅将新节点添加到群集。一个新节点是一个从未启动Apache Cassandra?(DDAC)的DataStax分发的系统。该节点在数据目录,saved_caches,commitlog和提示中必须完全没有 ...
分类:
其他好文 时间:
2020-02-06 18:05:29
阅读次数:
70
拓扑排序 拓扑排序是对有向 无圈 图的顶点的一种排序,它使得如果存在一条从$v_i$到$v_j$的路径,那么在排序中$v_j$出现在$v_i$的后面。如果图含有圈,那么拓扑排序是不可能的。此外,排序不必是唯一的;任何合理的排序都是可以的。 算法思想 第1种 先找出任意一个没有入边的顶点。然后显示出该 ...
分类:
编程语言 时间:
2020-02-06 12:53:25
阅读次数:
57