搜索
写经验 领红包

vue3和vue2的区别详解(vue3和vue2的优缺点)

导语:Vue3和Vue2的区别

vue3和vue2的区别详解(vue3和vue2的优缺点)

Vue3的重构背景:

1、利用新的语言特性(es6)

2、解决架构问题

新特性:

1、速度更快

重写了虚拟Dom的视线

编译模板的优化

更高效的组件初始化

update性能提升1.3~2倍

SSR速度提高了2~3倍

2、体积更小

通过webpack的tree-shaking功能,可以将无用模块“剪辑”,仅打包需要的

3、更易维护

Composition API可与现有的Options API一起使用

灵活的逻辑组合与复用

Vue3模块可与其他框架搭配使用

4、更接近原生

自定义渲染API

5、更易使用

响应式API暴露出来

新功能:

1、framents

2、Teleport

3、composition Api

4、createRenderer

非兼容变更:

Global API:

1、全局Vue API 已变更为应用程序实例

2、全局和内部API已经重构为可tree-shakable

模板指令:

1、组件上 v-modal 用法已更改

2、<template v-for>和非 v-for节点上key用法已变更

3、在同一元素上使用的v-if 和v-for 优先级已变更

4、v-bind=“object” 现在排序敏感

5、v-for 中的 ref 不再注册 ref 数组

组件:

1、只能使用普通函数创建功能组件

2、functional 属性在单文件组件(SFC)

3、异步组件现在需要 defineAsyncComponent 方法来创建

渲染函数:

1、渲染函数 API 改变

2、$scopedSlots property 已删除,所有插槽都通过 $slots 作为函数暴露

3、自定义指令 API 已更改为与组件生命周期一致

4、一些转换 class 被重命名了:v-enter -> v-enter-from、v-leave -> v-leave-from

5、组件 watch 选项和实例方法 $watch 不再支持点分隔字符串路径,请改用计算函数作为参数

6、在Vue2.x中,应用跟容器的outerHTML将替换为根组件模板(如果根组件没有模板/渲染选项,则最终编译为模板)。Vue3.x 现在使用应用程序容器的innerHTML。

其他小改变:

1、destroyed生命周期选项被重命名为unmounted

2、beforeDestroy生命周期选项被重命名为beforeUnmount

3、prop default 不再有权限访问this上下文

4、自定义指令api已更改为与组件生命周期一致

5、data应始终声明为函数

6、来自mixin的data选项现在可以简单的合并

7、attribute强制策略已更改

8、一些过渡的class被重命名

9、组件watch选项和实例方法$watch不再支持以点分隔的字符串路径。改用计算属性函数作为参数

10、<template>没有特殊指令的标记(v-if、v-else、v-for、v-slot)现在被视为普通元素,并将生成原生的<template>元素,而不是渲染其内部内容。

移除API

1、keyCode支持作为v-on的修饰符

2、$on、$off和$once实例方法

3、过滤filter

4、内联模板attribute

5、$destroy实例方法。用户不应再手动管理单个Vue组件的生命周期

本文内容由小春整理编辑!