1. Vue3相较Vue2的CLI工具升级
在Vue 3中,CLI工具已经得到了大力的升级,这使得开发体验更加舒适,开发人员可以更加方便地管理其项目。
1.1 配置文件的迁移
Vue 3中,许多CLI配置文件(webpack、babel等)都将从根目录下的`build/`文件夹迁移到`src/`文件夹下,使得文件结构更清晰。
1.2 项目结构的优化
Vue 3中,通过优化项目结构,大大减少了文件数量,提升了项目的可维护性和可阅读性。
例如,在典型的Vue2项目中,该项目的根目录将包含一个名为`src`的文件夹,里面有一些组件、views和其他资源,还有一些vue-cli构建脚本的文件。这些文件往往都是分散的,并非按类型组织的。这很容易令开发人员感到混乱。
而在Vue3中,我们只需在’/src’中分别创建‘components’,‘views’和‘assets’子目录,并将相应文件分配到适当目录中,即可使得项目重组更为清晰。文件结构大致如下:
./src
├── assets
│ ├── images
│ └── styles
├── components
│ ├── base
│ ├── common
│ └── ui
├── router
│ └── index.js
├── store
│ ├── actions.js
│ ├── index.js
│ ├── mutation-types.js
│ ├── mutations.js
│ └── modules
│ ├── cart.js
│ ├── index.js
│ ├── products.js
│ └── users.js
├── App.vue
└── main.js
1.3 新的插件API
Vue3的插件API进一步增强了Vue2.x对插件开发的支持。
Vue 3中已经支持了不同的插件API,例如传统的全局Vue.use() API以及应用程序级别的app.use() API。更重要的是,Vue3最新版本还引入了新的useInjections()成员,它允许插件将工具方法委托到父级组件中,从而更容易地获取依赖注入的依赖关系,以及共享包含业务逻辑的代码库。
2. Vue3的其他变化
2.1 Composition API取代Options API
在Vue 3中,Composition API已经取代了原来的Options API。
Options API是Vue之前的API,其重点是在每个Vue组件中声明不同的选项。然而,这会导致代码大量冗杂且困难,尤其是当你需要混合选项时。同时,Options API在多个组件之间共享代码还会变得非常困难。
Composition API是一个促进组件复用和组合的Vue API。它倾向于将具有详细功能的功能封装成即插即用的组合式API。它通过组合多个函数来描述组件功能,而不是拆分功能,并将各个选项分布在组件和其他选项之间,以获得更好的可读性和可重用性。
下面是一个简单的Counter示例,演示了如何使用香草Vue中的Options API,以及在Vue 3中如何使用Composition API(注意:example中,`setup()`中的代码使用了 ES2020对象解构,即:`{...variable}`这种形式)。
// Vue 2.x Example
<template>
<div>
{{ count }}
<button @click="increment">+</button>
</div>
</template>
<script>
export default {
data() {
return { count: 0 }
},
methods: {
increment() {
this.count++
}
}
}
</script>
//Vue 3 Example
<template>
<div>
{{ count }}
<button @click="increment">+</button>
</div>
</template>
<script>
import { reactive } from 'vue'
export default {
setup() {
const state = reactive({
count: 0
})
function increment() {
state.count++
}
return { count: state.count, increment }
}
}
</script>
2.2 更快的渲染
Vue 3中的编译器和渲染器得到了优化,从而使得Vue的整体性能得到了大幅提升。
一个显著的性能提升是,Vue 3中的模板和渲染器现在可以在编译时进行打包,而不是在运行时进行解析和编译。这样,Vue 3应用程序的性能将更快且更稳定。
2.3 更好的TypeScript支持
TypeScript已经在Vue 2.x项目中得到了支持,但是在Vue 3中,TypeScript得到了更好的支持。
Vue 3中的所有公共API都得到了TypeScript定义类型,以及可在TypeScript中使用的从Virtual DOM到Reactivity功能的类型定义。这只是Vue 3为TypeScript用户提供的一组工具之一,Vue 3还可以生成更利于TypeScript的TypeScript代码,从而使得代码开发过程更加高效和方便。
结论
Vue 3的CLI工具升级、更好的Composition API、更快的渲染性能以及更好的TypeScript支持的改进都使得Vue3相较Vue2更易于开发、更灵活、更高效。
虽然在Vue2中我们的组件也可以很漂亮、很实用,但是Vue3的优点让我们在组件之间共享代码、易于维护,在性能和用户体验方面都迈出了重要的一步。