
vue
vue
ahaott
追本溯源
展开
-
Vue 双向数据绑定原理
vue 通过双向数据绑定,来实现了 View 和 Model 的同步更新。vue 的双向数据绑定主要是通过数据劫持和发布订阅者模式来实现的。首先我们通过Object.defineProperty()方法来对 Model 数据各个属性添加访问器属性,以此来实现数据的劫持,因此当 Model 中的数据发生变化的时候,我们可以通过配置的 setter 和 getter 方法来实现对 View 层数据更新的通知。对于文本节点的更新,我们使用了发布订阅者模式,属性作为一个主题,我们为这个节点设置一个订...原创 2021-08-03 17:45:26 · 82 阅读 · 0 评论 -
写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?
vue和react都是采用 diff 算法来对比新旧虚拟节点,从而更新节点。在vue的 diff 函数交叉对比中,当新节点跟旧节点头尾交叉对比没有结果时,会根据新节点的key去对比旧节点数组中的key,从而找到相应旧节点(这里对应的是一个 key => index 的 map 映射)。如果没有找到就认为是一个新增节点。而如果没有 key,那么就会采用遍历查找的方式去找到对应的旧节点。一种一个 map 映射,另一种是遍历查找。相比而言,map 映射的速度更快。...原创 2021-08-17 10:16:43 · 136 阅读 · 0 评论 -
Vue 的响应式原理中 Object.defineProperty 有什么缺陷?为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?
原因如下:Object.defineProperty无法低耗费的监听到数组下标的变化,导致通过数组下标添加元素,不能实时响应; Object.defineProperty只能劫持对象的属性,从而需要对每个对象,每个属性进行遍历。如果属性值是对象,还需要深度遍历。Proxy可以劫持整个对象, 并返回一个新的对象。 Proxy不仅可以代理对象,还可以代理数组。还可以代理动态增加的属性。...原创 2021-08-01 22:16:29 · 442 阅读 · 0 评论 -
谈谈对vue渐进式的理解
Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。...原创 2021-07-29 14:56:04 · 1316 阅读 · 0 评论 -
vue生命周期
1.什么是生命周期Vue实例从创建 -- 运行 -- 销毁 的整个过程2.vue生命周期有三个阶段创建(初始化)运行(更新)销毁3、Vue 总共给提供了 8 个钩子函数created () {} --- 最早获取 ajax 的地方mounted () {} --- 最早处理 DOM 元素的地方(获取、赋值)updated () {} --- data 数据发生改变以后,会重新渲染页面destroyed () {} --- 实例或者组件从父级上中删除、销毁原创 2021-07-26 16:03:56 · 1025 阅读 · 0 评论 -
vue的优点
1、vue优点 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb; 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习; 双向数据绑定:保留了angular的特点,在数据操作方面更为简单; 组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势; 视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作; 虚拟DOM:dom操作是非常耗费原创 2021-07-05 15:51:41 · 496 阅读 · 0 评论