JAVA开发中Vue 3 的 Composition API 风格和 Vue 2 的 Options API 风格的区别

news/2024/12/29 5:06:01/

Vue 3 引入了 Composition API,这是一种新的编写 Vue 组件的方式,与传统的 Options API 形成对比。这两种风格各有优缺点,适用于不同的场景和开发习惯。以下是详细的比较:

Options API

Options API 是 Vue 2 中的主要编写方式,它通过对象选项(如 data, methods, computed, watch 等)来组织代码。

示例
<template><div><p>{{ message }}</p><button @click="increment">Increment</button></div>
</template><script>
export default {data() {return {count: 0,message: 'Hello, Vue!'};},methods: {increment() {this.count++;this.message = `Count is now ${this.count}`;}},computed: {doubleCount() {return this.count * 2;}},watch: {count(newVal) {console.log('Count changed to', newVal);}}
};
</script>
特点
  1. 结构清晰: 按照功能(数据、方法、计算属性等)分组。
  2. 易于上手: 对于小型项目或初学者来说更容易理解和维护。
  3. 局限性: 当组件变得复杂时,相同逻辑分散在不同选项中,难以管理和复用。

Composition API

Composition API 是 Vue 3 引入的新特性,通过组合函数来组织代码,使得逻辑更加模块化和可重用。

示例
<template><div><p>{{ message }}</p><button @click="increment">Increment</button></div>
</template><script>
import { ref, computed, watch } from 'vue';export default {setup() {const count = ref(0);const message = ref('Hello, Vue!');const increment = () => {count.value++;message.value = `Count is now ${count.value}`;};const doubleCount = computed(() => count.value * 2);watch(count, (newVal) => {console.log('Count changed to', newVal);});return {count,message,increment,doubleCount};}
};
</script>
特点
  1. 逻辑复用: 可以将相关逻辑提取到单独的函数中,便于复用。
  2. 更好的类型推断: 使用 TypeScript 时,TypeScript 能更好地推断类型。
  3. 更灵活的代码组织: 可以根据功能将代码分组,而不是按选项分组。
  4. 响应式系统增强: 提供了更多的组合函数(如 ref, reactive, computed, watch 等),增强了响应式的灵活性和强大功能。

混合使用

在实际开发中,你也可以混合使用 Options API 和 Composition API。例如,在一些简单的组件中继续使用 Options API,而在复杂的组件中使用 Composition API。

示例
<template><div><p>{{ message }}</p><button @click="increment">Increment</button></div>
</template><script>
import { ref, computed, watch } from 'vue';export default {data() {return {legacyData: 'Legacy Data'};},setup() {const count = ref(0);const message = ref('Hello, Vue!');const increment = () => {count.value++;message.value = `Count is now ${count.value}`;};const doubleCount = computed(() => count.value * 2);watch(count, (newVal) => {console.log('Count changed to', newVal);});return {count,message,increment,doubleCount};}
};
</script>

总结

  • Options API:

    • 优点: 结构清晰,易于上手。
    • 缺点: 大型组件中逻辑分散,不易管理。
  • Composition API:

    • 优点: 逻辑复用性强,更好的类型推断,更灵活的代码组织。
    • 缺点: 学习曲线较陡,需要适应新的思维方式。

选择哪种 API 风格取决于项目的规模、团队的技术栈以及个人偏好。对于大型项目或需要高代码复用性的项目,Composition API 更加合适;而对于小型项目或初学者,Options API 可能更为直观和易用。


http://www.ppmy.cn/news/1558981.html

相关文章

计算机组成原理的学习笔记(8)-- 指令系统·其一 指令的组成以及数据寻址方式

学习笔记 前言 ​ 本文主要是对于b站尚硅谷的计算机组成原理的学习笔记&#xff0c;仅用于学习交流。 1. 指令 1.1 组成 操作码&#xff08;Opcode&#xff09;&#xff1a;指指令中执行特定操作的部分。地址码&#xff1a;指令中用于指定操作数位置的部分。 1.2 扩展操作…

单片机实物成品-006 汽车尾气监测系统(代码+硬件+论文)

汽车尾气监测系统&#xff08;MQ135(空气质量) MQ7(一氧化碳)温度排风蜂鸣器灯光自动模式手动模式蓝牙传输控制送APP源码&#xff09; 本项目以软硬件结合的方式&#xff0c;选择C语言作为程序硬件编码语言&#xff0c;以STM32单片机作为核心控制板&#xff0c;在数据传输节点…

互联网十万个为什么之什么是微服务

微服务&#xff08;Microservices&#xff09;是一种软件架构设计模式&#xff0c;它将应用程序分解为小型、自治的服务单元&#xff0c;这些服务单元可以独立部署、扩展和维护&#xff0c;其中每一个服务单元也都是一个微服务。 基于微服务形成的软件架构风格称为微服务架构&…

浅谈下Spring MVC的执行流程

什么是Spring MVC Spring MVC是一个基于Java的Web框架&#xff0c;用于构建Web应用程序。 它是Spring Framework的一部分&#xff0c;它提供了模型-视图-控制器&#xff08;MVC&#xff09;架构。 支持RESTful风格的URL请求&#xff0c;易于与其他视图技术集成&#xff0c;如…

24/12/24 力扣每日一题 # 题目解析:1705. 吃苹果的最大数目 全网最详细解释

题目解析&#xff1a;1705. 吃苹果的最大数目 问题描述 你有一棵特殊的苹果树&#xff0c;连续 n 天&#xff0c;每天树上可能会长出若干个苹果。对于第 i 天&#xff1a; apples[i] 表示当天长出的苹果数量。这些苹果将在 days[i] 天后腐烂&#xff0c;也就是说&#xff0c…

MacOS M3源代码编译Qt6.8.1

编译时间过长&#xff0c;如果不想自己编译&#xff0c;可以通过如果网盘进行下载&#xff1a; 链接: https://pan.baidu.com/s/17lvF5jQ-vR6vE-KEchzrVA?pwdts26 提取码: ts26 在macOS上编译Qt 6需要一些前置步骤和工具。以下是编译Qt 6的基本步骤&#xff1a; 安装Xcode和…

LLaMA-Factory GLM4-9B-CHAT LoRA 指令微调实战

&#x1f929;LLaMA-Factory GLM LoRA 微调 安装llama-factory包 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git进入下载好的llama-factory&#xff0c;安装依赖包 cd LLaMA-Factory pip install -e ".[torch,metrics]" #上面这步操作会完成…

【YOLOv3】源码(train.py)

概述 主要模块分析 参数解析与初始化 功能&#xff1a;解析命令行参数&#xff0c;设置训练配置项目经理制定详细的施工计划和资源分配日志记录与监控 功能&#xff1a;初始化日志记录器&#xff0c;配置监控系统项目经理使用监控和记录工具&#xff0c;实时跟踪施工进度和质量…