Vue 3.0 引入的 Composition API 相较于 Vue 2.x 的 Options API 有显著的不同。下面从几个方面对比这两者的差异:


✅ 1. 代码组织方式不同

Vue 2.x — Options API
  • 使用 datamethodscomputedwatch 等分散的选项组织逻辑。

  • 每个功能点分散在不同的选项中,可能导致大型组件难以维护。

export default {data() {return {count: 0};},computed: {doubleCount() {return this.count * 2;}},methods: {increment() {this.count++;}}
};
Vue 3.x — Composition API
  • 使用 setup() 函数将相关逻辑聚合在一起,逻辑关注点清晰、复用性更强。

import { ref, computed } from 'vue';export default {setup() {const count = ref(0);const doubleCount = computed(() => count.value * 2);const increment = () => count.value++;return { count, doubleCount, increment };}
};

✅ 2. 代码复用方式不同

Vue 2.x — Options API
  • 主要通过 mixins 实现代码复用,但可能会产生命名冲突、不易追踪来源。

Vue 3.x — Composition API
  • 使用 自定义 hooks(composables) 复用逻辑,清晰、解耦、强类型支持好。

// useCounter.js
import { ref } from 'vue';export function useCounter() {const count = ref(0);const increment = () => count.value++;return { count, increment };
}
// 组件中使用
import { useCounter } from './useCounter';export default {setup() {const { count, increment } = useCounter();return { count, increment };}
}

✅ 3. 类型支持

  • Composition API 更加友好地支持 TypeScript,因为它依赖函数和变量声明,而不是框架“魔法”。

  • Options API 在类型推导方面较弱。


✅ 4. this 关键字使用

  • Options API 中大量使用 this,容易引发作用域混淆和错误。

  • Composition API 中避免使用 this,一切显式定义,作用域清晰。


✅ 5. 生命周期钩子写法不同

生命周期Vue 2 Options APIVue 3 Composition API
mountedmounted()onMounted(() => {})
createdcreated()setup() 阶段处理
beforeDestroybeforeDestroy()onBeforeUnmount()
import { onMounted } from 'vue';setup() {onMounted(() => {console.log('组件已挂载');});
}

✅ 6. 性能

  • Composition API 在 逻辑复用、类型推导、Tree-shaking 上更具优势。

  • Vue 3 在底层用 Proxy 替代 Object.defineProperty,性能本身也有提升。


✅ 总结对比表:

对比维度Options API (Vue 2)Composition API (Vue 3)
逻辑组织分模块聚合式
状态定义data/methods/computedref/reactive/computed
代码复用mixinscomposables
类型支持一般非常好
作用域this 上下文绑定无 this,更清晰
生命周期对应函数import 对应钩子使用
学习曲线容易上手更灵活但稍复杂

如果你是在大型项目、希望更好地复用逻辑或使用 TypeScript,Composition API 更合适;如果是小型项目或团队熟悉 Options API,也可继续使用,Vue 3 仍然支持它。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912568.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912568.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912568.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【IP 潮玩行业深度研究与学习】

潮玩行业发展趋势分析:全球市场格局与中国政策支持体系 潮玩产业正经历从"小众收藏"到"大众情绪消费"的深刻转型,2025年中国潮玩市场规模已达727亿元,预计2026年将突破1100亿元,年复合增长率高达26%。这一千…

进程通信-消息队列

消息队列允许一个进程将一个消息发送到一个队列中,另一个进程从该队列中接收这个消息。 使用流程: 写端: 使用结构体 mq_attr 设置消息队列属性,有四个选项: long mq_flags; // 队列属性: 0 表示阻塞 long …

串行通信接口USART,printf重定向数据发送,轮询和中断实现串口数据接收

目录 UART通信协议的介绍 实现串口数据发送 CubeMX配置 printf重定向代码编写 实现串口数据接收 轮询方式实现串口数据接收 接收单个字符 接收不定长字符串(接收的字符串以\n结尾) 中断方式实现串口数据接收 CubeMX配置 UART中断方式接收数据…

Kafka 生产者和消费者高级用法

Kafka 生产者和消费者高级用法 1 生产者的事务支持 Kafka 从版本0.11开始引入了事务支持,使得生产者可以实现原子操作,确保消息的可靠性。 // 示例代码:使用 Kafka 事务 producer.initTransactions(); try {producer.beginTransaction();pr…

k8s中crictl命令常报错解决方法

解决使用crictl命令时报默认端点弃用的报错 报错核心原因 默认端点弃用: crictl 会默认尝试多个容器运行时端点(如 dockershim.sock、containerd.sock 等),但这种 “自动探测” 方式已被 Kubernetes 弃用(官方要求手动…

回转体水下航行器简单运动控制的奥秘:PID 控制和水动力方程的运用

在水下航行器的控制领域中,回转体水下航行器的运动控制是一个关键课题。 今天,就来深入探讨一下其简单运动控制中,PID 控制以及水动力方程的相关运用。 PID 控制的基本原理PID 控制(比例 - 积分 - 微分控制)是一种广…

从入门到精通:npm、npx、nvm 包管理工具详解及常用命令

目录 1. 引言2. npm (Node Package Manager)2.1 定义与用途2.2 常见命令2.3 使用示例 3. npx (Node Package Execute)3.1 定义与用途3.2 常见命令3.3 使用示例3.4 npm 与 npx 的区别 4. nvm (Node Version Manager)4.1 定义与用途4.2 安装 nvm4.3 常见命令4.4 使用示例 5. 工具…

es6特性-第二部分

Promise 介绍和基本使用 Promise是ES6引入的异步编程的新解决方案,主要用来解决回调地狱问题。语法上 Promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。 Promise构造函数:new Promise() Promise.prototype.then方法 Promise.prototype.ca…

java:如何用 JDBC 连接 TDSQL 数据库

要使用JDBC连接TDSQL数据库&#xff08;腾讯云分布式数据库&#xff0c;兼容MySQL协议&#xff09;&#xff0c;请按照以下步骤编写Java程序&#xff1a; 1. 添加MySQL JDBC驱动依赖 在项目的pom.xml中添加依赖&#xff08;Maven项目&#xff09;&#xff1a; <dependenc…

2025年四川省高考志愿填报深度分析与专业导向策略报告——基于599分/24000位次考生-AI

2025年四川省高考志愿填报深度分析与专业导向策略报告——基于599分/24000位次考生 摘要 本报告旨在为预估高考成绩599分、全省物理类位次在24,000名左右的2025年四川考生&#xff0c;提供一份兼具科学性、前瞻性与专业深度的志愿填报策略方案。报告严格遵循“位次法”为核心…

spring boot项目整合百度翻译

本片文章教大家怎样在spring boot项目中引入百度翻译&#xff0c;并且优雅的使用百度翻译。 首先&#xff0c;我们要了解为什么要使用翻译插件。为了支持多语言的国际化&#xff1b; 目前市面上最常见的后端国际化就是在resource资源目录下设置多个语言文档&#xff0c;这些文…

凌晨2点自动备份mysql 数据库,mysql_backup.sh

1、编写备份脚本&#xff1a;vim mysql_backup.sh #!/bin/bash DATE$(date %Y%m%d_%H%M%S) BACKUP_DIR"/data/mysql/backup" USER"backup_user" PASSWORD"backup**"# 逻辑备份所有数据库 mysqldump -u$USER -p$PASSWORD eblp | gzip > $BA…

Linux系统之Tomcat服务

目录 一、Tomcat概述 1、Tomcat介绍 2、Tomcat历史 二、Tomcat原理分析 1、Http工作原理 2、Tomcat整体架构 3、Coyote连接器架构 4、Catalina容器架构 5、Jasper处理流程 6、JSP编译过程 7、Tomcat启动流程 8、Tomcat请求处理流程 三、Tomcat安装与配置 1、单实…

FPGA芯片的供电

FPGA芯片的供电 文章目录 FPGA芯片的供电1. 外部端口供电机制2. 内部逻辑供电机制3. 专有电路供电机制4. 电源稳定性讨论总结 1. 外部端口供电机制 FPGA是专门用于数字系统设计的芯片&#xff0c;能够正确、可靠、高效地和外界其他数字电路进行通信是FPGA芯片必备的一个功能。…

构建可无限扩展的系统:基于 FreeMarker + 存储过程 + Spring Boot 的元数据驱动架构设计

在构建面向多行业、多客户的大型业务系统时&#xff0c;系统的灵活性与扩展能力成为架构设计的核心目标。传统硬编码的开发方式在面对高频变化、复杂组合查询、多租户自定义字段时&#xff0c;往往难以适应。 为了解决上述问题&#xff0c;我们提出一种 以 FreeMarker 脚本托管…

2-深度学习挖短线股-3-训练数据计算

2-3 合并输入特征 首先定义了数据预处理函数&#xff0c;将连续 n 天的 K 线数据&#xff08;如开盘价、收盘价、成交量等&#xff09;合并为一行特征&#xff0c;同时保留对应的目标标签&#xff08;buy 列&#xff0c;表示是否应该买入&#xff09;&#xff1b;然后读取股票代…

SpringMVC系列(四)(请求处理的十个实验(下))

0 引言 作者正在学习SpringMVC相关内容&#xff0c;学到了一些知识&#xff0c;希望分享给需要短时间想要了解SpringMVC的读者朋友们&#xff0c;想用通俗的语言讲述其中的知识&#xff0c;希望与诸位共勉&#xff0c;共同进步&#xff01; 本系列会持续更新&#xff01;&…

产线通信“变形记”:PROFIBUS-DP与ETHERNET/IP的食品饮料跨界融合

在食品饮料加工行业&#xff0c;为实现不同设备间高效通信&#xff0c;JH-PB-EIP疆鸿智能PROFIBUS DP转ETHERNET/IP网关发挥着关键作用。西门子PLC常采用PROFIBUS DP协议&#xff0c;而码垛机器人等设备多使用ETHERNET/IP协议&#xff0c;网关成为连接二者的桥梁。 将DP作为从站…

设计模式-观察者模式(发布订阅模式)

一、需要的类 一个发布类&#xff1a;里面一个是别人需要订阅的属性&#xff0c;以及用于存储订阅者的list&#xff0c;attach方法是往list集合里面添加元素&#xff0c;notifyObservers通知方法&#xff0c;也就是循环调用订阅者里面的一个方法&#xff0c;这个notifyObserve…

Linux测试是否能联网

ping百度看是否有返回包&#xff1a; ping www.baidu.com ping -c可以通过参数提前设置发送的包数量&#xff1a; ping -c 4 www.baidu.com 终止ping快捷键&#xff1a; 按下 Ctrl C&#xff1a;立即终止ping进程&#xff0c;并显示统计信息。按下 Ctrl Z&#xff1a;将进…