# fed-e-task-01-01 **Repository Path**: archer/fed-e-task-01-01 ## Basic Information - **Project Name**: fed-e-task-01-01 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # fed-e-task-01-01 1、下面关于虚拟 DOM 的说法正确的是:C、D - A. 使用虚拟 DOM 不需要手动操作 DOM,可以极大的提高程序的性能。 - B. 使用虚拟 DOM 不需要手动操作 DOM,可以极大的提高开发效率。 - C. 虚拟 DOM 可以维护程序的状态,通过对比两次状态的差异更新真实 DOM。 - D. 虚拟 DOM 本质上是 JavaScript 对象,可以跨平台,例如服务器渲染、Weex 开发等。 2、下面关于 Snabbdom 库的描述错误的是:C、D - A. Snabbdom 库是一个高效的虚拟 DOM 库,Vue.js 的虚拟 DOM 借鉴了 Snabbdom 库。 - B. 使用 h() 函数创建 VNode 对象,描述真实 DOM 结构。 - C. Snabbdom 库本身可以处理 DOM 的属性、事件、样式等操作。 - D. 使用 patch(oldVnode, null) 可以清空页面元素 1、请简述 patchVnode 函数的执行过程。 - 触发prepatch钩子函数 - 触发update钩子函数 - 节点有新text属性,且不等于旧节点的text属性 - 如果老节点有children,移除老节点children对应dom - 设置新节点对应dom的textContent - 新老节点都有children,且不相当 - 调用updateChildren - 对比子节点,更新子节点差异 - 只有新节点有children - 老节点有text属性时,清空dom的textContent - 添加新节点的所有子节点 - 只有老节点有children - 移除子节点 - 只有老节点有text - 清空dom的textContent - 触发postpatch钩子函数