浅谈Vue3与Vue2区别

1.Vue2选用选项式API(options api) 对比Vue3组合式API(Composition Api)

options api在代码里分割了不同的属性(properties):data,computed属性,methods,选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。

Composition Api能让我们用方法(function)来分割,相比于旧的API使用属性来分组,这样代码会更加简便和整洁。

2.响应式原理

Vue2:Object.defineProperty(obj, prop, descriptor)对属性的读取丶修改进行拦截(数据劫持)

问题:新增、删除属性页面不会更新(采用$set、$delete 进行属性更新);直接通过下标修改数组界面不会更新($set、splice方式更新)

obj要定义属性的对象。prop要定义或修改的属性的名称或 Symbol 。get属性的 getter 函数,如果没有 getter,则为 undefined。当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入 this 对象(由于继承关系,这里的this并不一定是定义该属性的对象)。该函数的返回值会被用作属性的值。默认为 undefined。set属性的 setter 函数,如果没有 setter,则为 undefined。当属性值被修改时,会调用此函数。该方法接受一个参数(也就是被赋予的新值),会传入赋值时的 this 对象。默认为 undefined。

Vue3:通过Proxy(代理):拦截对象中任意属性的变化,包括属性的读写,属性的添加,属性的删除;通过Reflect(反射):对源对象的属性进行操作;**Vue 3 版本也使用了 Object.defineProperty 来支持 IE 浏览器;

 3.生命周期

4.优化工程方面,引入了treeShaking;

6.多根节点组件、函数式组件;

 

posted @ 2023-03-10 16:28  这是啥!啥!啥  阅读(175)  评论(0编辑  收藏  举报