Vue 3 带来了许多新特性和改进,其中最重要的是 Composition API。但除了这个,Vue 3 还在模板语法、指令、组件等方面有所更新。以下是对 Vue 3 语法的详细说明:
- Composition API
Vue 3 引入了 Composition API,这是一种新的、可选的 API,允许用户更加灵活地组织和重用逻辑代码。它使用 setup()
函数来替代 Vue 2 中的 data()
、methods
、computed
和 watch
等选项。
import { ref, computed } from 'vue';
export default {
setup() {
const count = ref(0);
const doubleCount = computed(() => count.value * 2);
function increment() {
count.value++;
}
return { count, doubleCount, increment };
}
};
- 模板语法
Vue 3 的模板语法与 Vue 2 大致相同,但有一些细微的改进。例如,现在可以在模板中直接使用 v-if
、v-for
和 v-on
的缩写形式(:
和 @
)。
<template>
<div>
<p v-if="showMessage">Hello, Vue 3!</p>
<button @click="increment">Increment</button>
<ul>
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
</ul>
</div>
</template>
- 指令
Vue 3 中的指令与 Vue 2 基本相同,包括 v-model
、v-show
、v-pre
、v-cloak
、v-once
等。但 Vue 3 对 v-model
进行了扩展,支持多个模型和一个组件上的多个 v-model
。
- 组件
Vue 3 中的组件定义与 Vue 2 类似,但有一些细微的差别。例如,Vue 3 使用 defineComponent
函数来定义组件,并提供了更强大的类型检查功能。此外,Vue 3 还引入了 Fragment
、Suspense
和 Teleport
等新特性,使组件开发更加灵活。
5. 生命周期钩子
Vue 3 对生命周期钩子进行了重新命名和调整。例如,beforeDestroy
更名为 beforeUnmount
,destroyed
更名为 unmounted
。同时,Vue 3 还引入了 onMounted
、onUpdated
、onUnmounted
等新的生命周期函数,这些函数可以在 setup()
函数中使用。
6. 响应式系统
Vue 3 的响应式系统进行了重大改进,现在使用 Proxy 来替换原本的 Object.defineProperty 实现数据响应式,从而解决了 Vue 2 中存在的一些限制和问题。新的响应式系统更加高效、灵活,并支持新的响应式 API,如 ref()
、reactive()
、computed()
和 watch()
等。
7. 其他特性
Vue 3 还引入了其他一些新特性和改进,如全局 API 的调整(如使用 createApp()
替代 new Vue()
)、性能优化、TypeScript 支持的改进等。这些特性使得 Vue 3 更加现代化、易用和高效。
总的来说,Vue 3 在保留 Vue 2 核心特性的基础上,引入了许多新特性和改进,使得 Vue 开发更加灵活、高效和愉悦。