如何丝滑的从Vue2向Vue3的过渡(上篇)

Vue3的到来开启了一系列增强和突破性功能的新时代。从Vue2到Vue3的这一进化步骤为开发者提供了一系列机会,能够让我们站在Web开发趋势的前沿,充分发挥这个卓越框架的潜力。今天我将与大家分享,Vue3带来的宏伟进步。在迁移过程中如何处理已弃用和被淘汰的部分,以及如何丝滑的从Vue2向Vue3过渡。

Vue3的新特性都有哪些呢?

1. Composition API(组合式API)


组合式API提供了一种灵活的方式来组织组件逻辑,更易于通过更好的类型检查在组件之间重用代码。与选项式API相比,组合式API更易于维护。

2. 更好的类型支持

Vue3的代码基于TypeScript完全编写,具有自动生成的类型定义。它具有更好的类型推断和对TypeScript的可选链和空值合并运算符的支持。

3.改进的虚拟DOM算法,多根节点

Vue3中的虚拟DOM已经完全重新设计。它利用了一个新的差异算法,并通过基于编译器的优化加速渲染过程。 在Vue3中,我们可以为单个组件创建多个根节点,而在Vue2中这是不可行的。

4.传送门(Teleport)

<Teleport> 是一个内置组件,允许我们将组件模板的一部分"传送"到存在于该组件的DOM层次结构之外的DOM节点中。<Teleport> 的 to 属性期望一个CSS选择器字符串或一个实际的DOM节点。当<Teleport> 组件被挂载时,传送到目标的节点必须已经存在于DOM中。如下面代码所示:

这段代码使用了Vue3的组件 <demo-component> 包含了一个 <teleport> 组件,而 <teleport> 又包裹了一个名为 <pop-up> 的子组件。这段代码的主要目的是将 <pop-up> 组件的内容传送(teleport)到页面中具有 id="teleport-area" 的 DOM 节点内。

Vue 3已弃用和移除的内容

Filters:

在Vue 3中,已移除Filters。相反,我们可以使用方法或计算属性。您可以参考下面的示例:

vue2中的filters函数

Vue3使用计算属性进行了替换

v-model

在Vue 3中,v-model的prop和事件默认名称已更改:

  • PROP: value ⟶ modelValue;
  • EVENT: input ⟶ update:modelValue;
  • 破坏性的变更: v-bind的.sync修饰符和组件模型选项已被移除,用v-model上的参数替代
  • 新增: 可以在同一组件上进行多个v-model绑定 ;创建自定义v-model修饰符的能力

Vue2中的v-model

Vue3中V-model

作用域插槽

在Vue 3中,作用域插槽具有不同的语法。要识别插槽名称,请使用v-slot指令或其#简写。

Vue2 slot的使用

Vue3 slot的使用

Key属性

Vue3 在v-if/v-else/v-else-if分支上不再需要key,因为Vue现在会自动生成唯一的key。 在<template v-for>上的key应该放在<template>标签上(而不是其子元素上)。

v-if与v-for的优先级

  • 在Vue 2中: 在同一个元素上同时使用v-if和v-for时,v-for会优先于v-if。
  • 在Vue 3中: v-if将始终优先于v-for。

以上是今天的分享内容,由于篇幅太长的原因,下一篇将继续分享 如何丝滑的从Vue2向Vue3过渡。如果你感兴趣,欢迎评论 点赞和收藏!

相关推荐
mldong1 小时前
一个 npm 包,九页审批中心:Vue3 项目接上工作流引擎
前端·javascript·vue.js
高级程序源9 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe9 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
WeiXin_DZbishe11 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
WeiXin_DZbishe12 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
_馒头12 小时前
pixiJs游戏开发实践 - 跳棋小游戏
javascript·vue.js
AIGC小尼14 小时前
毕设实战|SpringBoot+Vue 实现多个系统项目
vue.js·spring boot·课程设计
踩着两条虫17 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
高级程序源18 小时前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计
溪语流沙18 小时前
【Web全栈进阶】前端世界观:现代工具链与框架为什么存在
前端·javascript·vue.js