vue3 中的两种API--选项 API 和 组合 API区别

本文介绍了如何使用Vue CLI和Vite快速创建Vue 3项目,并详细比较了选项API与组合API的优缺点,强调了两者在不同场景的应用选择。

**
这是原作者的文章

搭建 vue3 开发环境:

**
①: 使用 vue-cli搭建

和 vue2 搭建没有太大差异,选择自定义配置时,只用在选择版本时选择 3.x 版本即可。

安装完毕可以检查 package.json 文件,vue的版本号(我目前创建完成后版本为 3.2.0)

②: 使用 vite 创建 vue项目

直接在终端中输入 npm init vite-app 项目名称 或者 yarn create vite-app 项目名称

vue中的两种API–选项 API 和 组合 API

① 选项 API

什么是选项 API : 在 vue2.x 项目中使用的就是 选项API 写法

代码风格:date选项写数据,methods选项写函数、、、、,一个功能逻辑的代码分散

优点:易于学习和使用,写代码的位置已经约定好了

缺点:代码组织性差,相似的逻辑代码不便于复用,逻辑复杂代码多了不好阅读。

虽然提供了 mixins 用来封装逻辑,但是出现数据函数覆盖的概率很大,不好维护

② 组合 API

什么是组合 API : 在 vue3 中使用的就是 组合API 写法

代码风格:一个功能逻辑的代码组织在一起(包括数据,函数、、、)

优点:功能逻辑复杂繁多情况下,各个功能逻辑代码组织再一起,便于阅读和维护

缺点:需要有良好的代码组织能力和拆分逻辑能力 (在 vue3 中也可以支持 vue2 选项API 写法)

③ 选项式和组合式 API 的关系

  1. 组合式 API 的目的是增强,不是取代选项式 API , vue3 对两种 API 都支持

  2. 简单的场景使用选项式 API 更加简单方便

  3. 需要强烈支持 TS 的项目首选组合式 API

  4. 需要大量逻辑复用的场景首选组合式 API

Vue 3 中的选项式 API(Options API组合式 API(Composition API)是两种构建组件的方式,它们本质上是不同的组织逻辑编写代码的风格,以下是它们的区别: ### 代码组织方式 - **选项式 API**:通过不同的选项(如 `data`、`methods`、`computed`、`watch` 等)来组织代码,每个选项有其特定的功能用途。这种方式将不同类型的逻辑分离,对于小型组件初学者来说,代码结构清晰,易于理解。例如: ```vue <template> <button @click="add">Count is: {{ count }}</button> </template> <script> export default { data() { return { count: 0 }; }, methods: { add() { this.count++; } } }; </script> ``` - **组合式 API**:基于函数的组合来组织代码,将相关的逻辑封装在一个或多个函数中。这种方式可以更灵活地组织代码,特别是在处理复杂逻辑时,能将相关逻辑放在一起,提高代码的可读性可维护性。通常与 `<script setup>` 搭配使用,示例如下: ```vue <template> <button @click="add">Count is: {{ count }}</button> </template> <script setup> import { ref } from &#39;vue&#39;; // 响应式状态 const count = ref(0); // 用来修改状态、触发更新的函数 function add() { count.value++; } </script> ``` ### 逻辑复用性 - **选项式 API**:逻辑复用主要通过 mixins 实现,但 mixins 存在一些问题,如命名冲突、不清晰的数据来源等,导致代码的可维护性降低。 - **组合式 API**:可以将相关逻辑封装成一个函数(通常称为组合函数),在多个组件中复用,避免了 mixins 的问题,提高了逻辑复用的灵活性可维护性。例如,可以创建一个组合函数来处理计数器逻辑: ```javascript import { ref } from &#39;vue&#39;; export function useCounter() { const count = ref(0); function add() { count.value++; } return { count, add }; } ``` 然后在组件中使用: ```vue <template> <button @click="add">Count is: {{ count }}</button> </template> <script setup> import { useCounter } from &#39;./useCounter&#39;; const { count, add } = useCounter(); </script> ``` ### 类型支持 - **选项式 API**:对 TypeScript 的支持相对较弱,需要额外的配置类型声明,在处理复杂类型时会比较繁琐。 - **组合式 API**:由于是基于函数的方式,天然对 TypeScript 有更好的支持,能更方便地进行类型推导类型声明,适合在需要强烈支持 TS 的项目中使用[^4]。 ### 适用场景 - **选项式 API**:适合简单的场景,代码量较少、逻辑简单的组件,对于初学者来说更容易上手。 - **组合式 API**:适合需要大量逻辑复用的场景、复杂的业务逻辑以及大型项目,能提高代码的可维护性可扩展性。同时,组合式 API 的目的是增强,而不是取代选项式 API [^4]。 ### 响应式原理 - **选项式 API**:响应式系统是隐式的,通过 `data` 选项定义的数据会自动转换为响应式数据,开发者不需要手动处理响应式。 - **组合式 API**:响应式系统是显式的,需要使用 `ref`、`reactive` 等函数来创建响应式数据,开发者对响应式的控制更加灵活。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值