【第5章】Vue之API风格

news2025/1/14 18:22:46

文章目录

  • 前言
  • 一、选项式 API(Options API)
    • 1. 代码
    • 2. 效果
  • 二、组合式 API(Composition API)
    • 1. 代码
    • 2. 效果
  • 三、两者之间的区别
  • 总结


前言

Vue.js 提供了两种主要的 API 风格来组织组件的代码:选项式 API(Options API)和组合式 API(Composition API)。这两种 API 风格在 Vue 3 中都得到了支持,但组合式 API 是在 Vue 3 中引入的新特性,旨在解决大型组件中逻辑难以组织和复用的问题。

接下来我们来使用一个时钟的案例来展示同样的用法,不通的代码风格。


一、选项式 API(Options API)

在 Vue 2 和 Vue 3 中,选项式 API 是默认的 API 风格。它使用 export default 返回一个对象,该对象包含组件的各种选项,如 datamethodscomputedwatchmounted 等。

1. 代码

<script>
//选项式 API
export default {
  data() {
    return {
        msg: '选项式 API时钟功能',
        currentTime: ''
    };
  },
  methods: {
    updateTime() {  
      const now = new Date();  
      this.currentTime = `${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`;  
    } 
  },
  mounted() {
    this.updateTime(); // 在组件加载时获取一次时间  
    setInterval(this.updateTime, 1000); // 每秒更新一次时间  
  },
  beforeDestroy() {  
    clearInterval(this.intervalId); // 在组件销毁前清除定时器  
  }
};
</script>

<template>
   <h1>{{ msg }}</h1>
  <div><p>当前时间: {{ currentTime }}</p></div>
</template>

<style>
  h1{
    color:rgb(0, 255, 115);
  }
</style>

2. 效果

在这里插入图片描述

二、组合式 API(Composition API)

组合式 API 是在 Vue 3 中引入的一种新特性,它允许你使用更具函数式编程风格的代码来组织组件逻辑。组合式 API 提供了一系列函数,如 refreactivecomputedwatchsetup 等,这些函数可以在 setup 函数中一起使用,以定义组件的状态、方法和计算属性。

1. 代码

<!-- 组合式 API -->
<script setup>
import { ref,onMounted,onBeforeUnmount} from 'vue'

// 定时器的引用  
let intervalId = null;
const msg = ref('组合式 API时钟功能')
const currentTime = ref('')

function updateTime() {
    const now = new Date();  
    currentTime.value = `${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`;
}

onMounted(() => {
    updateTime(); // 在组件加载时获取一次时间
    intervalId = setInterval(updateTime, 1000); // 每秒更新一次时间     
}) 
onBeforeUnmount(() => {
    clearInterval(this.intervalId); // 在组件销毁前清除定时器  
})
</script>

<template>
   <h1>{{ msg }}</h1>
  <div><p>当前时间: {{ currentTime }}</p></div>
</template>

<style>
  h1{
    color:rgb(0, 255, 115);
  }
</style>

2. 效果

在这里插入图片描述

三、两者之间的区别

  1. 逻辑组织:组合式 API 允许你将相关的逻辑组合在一起,而不是分散在组件的各个选项中。这有助于提高代码的可读性和可维护性。

  2. 代码复用:使用组合式 API,你可以更容易地提取和复用逻辑代码段。你可以创建可复用的函数,这些函数可以接收 refreactive 等作为参数,并返回计算属性、方法等。

  3. TypeScript 支持:组合式 API 与 TypeScript 配合得更好,因为它允许你明确地定义组件的状态和类型。

  4. 响应式系统:组合式 API 提供了更底层的响应式系统 API,如 refreactive,这些 API 可以更直接地操作响应式数据。

  5. 向后兼容性:Vue 3 同时支持选项式 API 和组合式 API,以确保与 Vue 2 的向后兼容性。但是,Vue 官方推荐使用组合式 API 来开发新的 Vue 3 应用程序。


总结

回到顶部
总的来说,选择哪种 API 风格取决于你的具体需求和偏好。对于小型、简单的组件,选项式 API 可能已经足够。但是,对于大型、复杂的组件,组合式 API 可以提供更清晰、更可维护的代码结构。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP MMRV/MMPV 物料账期月结月底月初开关

公告&#xff1a;周一至周五每日一更&#xff0c;周六日存稿&#xff0c;请您点“关注”和“在看”&#xff0c;后续推送的时候不至于看不到每日更新内容&#xff0c;感谢。 这是一条刮刮乐&#xff0c;按住全部选中&#xff1a;点关注的人最帅最美&#xff0c;欢迎&#xff1…

码农学点儿经济学-博傻理论

博傻理论 一位石油大佬去天堂开会&#xff0c;他兴冲冲地跑进会议室&#xff0c;却发现座无虚席&#xff0c;早已经没了他的座位。于是他灵机一动&#xff0c;大喊一声&#xff1a;大家注意啦&#xff01;听说&#xff0c;有人在地狱发现了石油&#xff01;此言一出&#xff0c…

(财务应用程序:计算利息)

(财务应用程序:计算利息)如果知道收支余额和年利率的百分比&#xff0c;就可以使用下面的 公式计算&#xff1a; 编写程序&#xff0c;读取收支余额和年百分利率&#xff0c;显示下月利息。下面是一个运行示例: package myjava; import java.math.*; import java.util.Scanner;…

10.4 Go 并发模式

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

使用Arthas查看方法的参数信息情况

使用Arthas查看方法的参数信息情况 前言 最近在排查一个bug&#xff0c;需要看看一个接口方法的传参&#xff0c;但是方法里并没有打印传参&#xff0c;而且还是生产环境&#xff0c;更新包也麻烦&#xff0c;所以&#xff0c;准备安装一下Arthas&#xff0c;通过Arthas可以做…

iText7——画发票PDF(完整)

显示描述&#xff1a; 1、每页显示必须带有发票头、“销售方和购买方信息” 2、明细填充为&#xff1a;当n≤8 行时&#xff0c;发票总高度140mm&#xff0c;每条发票明细行款高度4.375mm&#xff1b; 当8<n≤12行时&#xff0c;发票高度增加17.5mm&#xff0c;不换页&#…

Flink任务如何跑起来之 2.算子 StreamOperator

Flink任务如何跑起来之 2.算子 StreamOperator 前文介绍了Transformation创建过程&#xff0c;大多数情况下通过UDF完成DataStream转换中&#xff0c;生成的Transformation实例中&#xff0c;核心逻辑是封装了SimpleOperatorFactory实例。 UDF场景下&#xff0c;DataStream到…

python怎么显示行号

我们如果想让Python IDLE显示行号&#xff0c;我们可以通过扩展IDLE功能来做到。 1.我们需要下载一个LineNumber.py扩展。 2.我们打开Python安装目录&#xff0c;找到安装目录下的Lib\idlelib目录&#xff0c;复制LineNumber到这个目录。 3.然后启动扩展。 4.配置扩展的方式…

CCF 矩阵重塑

第一题&#xff1a;矩阵重塑&#xff08;一&#xff09; 本题有两种思路 第一种 &#xff08;不确定是否正确 但是100分&#xff09; #include<iostream> using namespace std; int main(){int n,m,p,q,i,j;cin>>n>>m>>p>>q;int a[n][m];for(i…

英语学习笔记34——What are they doing?

What are they doing? 他们在做什么&#xff1f; 词汇 Vocabulary sleep v. 睡觉 ing形式&#xff1a;sleeping 例句&#xff1a;那个男孩正在睡觉。    That boy is sleeping. 相关&#xff1a;sleepy 困的 例句&#xff1a;我太困了。    I’m so sleepy. shave v.…

实时数据的处理一致性如何保证?

实时数据一致性的定义以及面临的挑战 数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中&#xff0c;一致性包括但不限于数据的准确性、完整性、时效性和顺序性。 下图是典型的实时/流式数据处理的流程&#xff1a; 流式数据以各…

技术速递|Java on Azure Tooling 5月更新 - Java 对 Azure 容器应用程序的入门指南支持

作者&#xff1a;Jialuo Gan 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎阅读 Java on Azure 工具 5 月份更新。在本次更新中&#xff0c;我们将介绍 Java 在 Azure 上的容器应用程序的入门指南。希望您喜欢这些更新&#xff0c;并享受使用 Azure 工具包的流畅体验。请下…

鸿蒙轻内核A核源码分析系列七 进程管理 (3)

本文记录下进程相关的初始化函数&#xff0c;如OsSystemProcessCreate、OsProcessInit、OsProcessCreateInit、OsUserInitProcess、OsDeInitPCB、OsUserInitProcessStart等。 1、LiteOS-A内核进程创建初始化通用函数 先看看一些内部函数&#xff0c;不管是初始化用户态进程还…

助力618!你想便宜寄快递退换货吗?

家人们&#xff0c;姐妹们&#xff0c;马上就要到618了&#xff0c;每年一到这种重要的节日&#xff0c;我们都会买买买&#xff0c;但是我们有时候买了会发现这个商品不太满意&#xff0c;我们会选择退换货&#xff0c;或者给商家邮寄回去&#xff0c;但是这个运费可真的太贵了…

CRC计算单元

CRC计算单元 CRC是Cyclic Redundancy Check,循环冗余校验的缩写. 是一种检测数据错误的技术,主要用在数据通信和数据存储的方面. 但是这种技术只能检测到传输或存储的数据是否有误,没有将错误纠正的功能. 而CRC计算单元是一个独立的具备CRC计算功能的外设. AT32 MCU片上CRC计…

Web应用安全测试-认证功能缺陷

Web应用安全测试-认证功能缺陷 存在空口令 漏洞描述&#xff1a;认证登录环节允许空口令 测试方法&#xff1a; 找到网站登录页面&#xff0c;尝试输入用用户名&#xff0c;密码为空进行登录。 风险分析&#xff1a;攻击者可利用该漏洞登录网站后台&#xff0c;操作敏感数…

Warning: `ReactDOMTestUtils.act` is deprecated in favor of `React.act`.

问题&#xff1a;在代码中使用jest进行单元测试时&#xff0c;报错如下&#xff1a; 解决思路&#xff1a; 根据报错提示出来的 react-dom/test-utils 进行全局搜索&#xff0c;发现没有该引用&#xff0c;故进入该代码块中分析。发现代码中引入testing-library/react &#…

C++ 28 之 类对象作为类成员

#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> using namespace std;class Phone { public:string s_p_name;Phone(string p_name) {s_p_name p_name;cout << "phone的构造函数调用" << endl;}~Phone(){cout &…

BitMEX 联合创始人 Arthur Hayes 加入 Covalent 担任战略顾问

Arthur Hayes 加入 Covalent Network&#xff08;CQT&#xff09;&#xff0c;成为其战略顾问。 Hayes 认为 Covalent 与其竞争对手如 The Graph 相比&#xff0c;Covalent Network 的 CQT 代币一直被相对低估&#xff0c;他希望帮助 Covalent Network&#xff08;CQT&#x…

【Three.js】知识梳理二十一:Three.js性能优化和实践建议

Three.js 是一个功能强大的 3D 引擎&#xff0c;用于创建 WebGL 应用。尽管它功能强大&#xff0c;但在复杂的 3D 场景中保持高性能是一个挑战。本文将分享一些在使用 Three.js 时的性能优化提示&#xff0c;帮助你提高应用的运行效率。 1. 使用 stats.js 监视性能 在进行任何…