闪烁之狐
03
25
25
Vue3对⽐Vue2的变化 Vue3对⽐Vue2的变化
性能优化(更快): 使用了Proxy替代 Object.defineProperty 实现响应式。(为什么?defineProperty 需要对属性进行递归重写添加getter及setter 性能差,同时新增属性和删除属性时无法监控变化,
2024-03-25
25
25
22
key的作用和原理 key的作用和原理
1.1 key 的概念 key 的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类
2024-03-22
22
Vue中的diff算法 Vue中的diff算法
1.1 Diff 概念vue 基于虚拟 DOM 做更新 。diff 的核心就是比较两个虚拟节点的差异 。Vue 的 diff 算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式 + 双指针的方式进行比较。 1.2 Vue2 Dif
2024-03-22
22
Vue 中如何检测数组变化? Vue 中如何检测数组变化?
1.1 Vue2 中采用重写数组方法的方式 数组考虑性能原因没有用defineProperty对数组的每一项进行拦截,而是选择重写数组(push,shift,pop,splice,unshift,sort,reverse)方法。数组中如果是
2024-03-22
22
Vue 中如何进行依赖收集 Vue 中如何进行依赖收集
1.1 依赖收集的流程 每个属性都拥有自己的dep属性,存放他所依赖的 watcher,当属性变化后会通知自己对应的 watcher 去更新 默认在初始化时会调用 render 函数,此时会触发属性依赖收集 dep.depend 当属性发生
2024-03-22
22
如何将template转换成render函数 如何将template转换成render函数
Vue 中含有模版编译的功能,它的主要作用是将用户编写的 template 编译为 js 中可执行的 render 函数。 Vue 中的模版转化流程 将 template 模板转换成 ast 语法树 - parserHTML (ast 描述
2024-03-22
22
请说一下你对响应式数据的理解? 请说一下你对响应式数据的理解?
1.1 如何实现响应式数据数组和对象类型当值变化时如何劫持到。对象内部通过defineReactive方法,使用Object.defineProperty将属性进行劫持(只会劫持已经存在的属性),数组则是通过重写数组方法来实现。 多层对象是
2024-03-22
22
22
谈谈vue组件化的理解 谈谈vue组件化的理解
WebComponent 组件化的核心组成:模板、属性、事件、插槽、生命周期。 组件化好处: 高内聚、可重用、可组合 组件化开发能大幅提高应用开发效率、测试性、复用性等; 降低更新范围,只重新渲染变化的组件; 补充: Vue 中的每
2024-03-22
3 / 4