首页 > 其他分享 >【第5章】Vue之API风格

【第5章】Vue之API风格

时间:2024-06-13 19:29:11浏览次数:25  
标签:组合式 选项 Vue API 风格 组件 now

文章目录


前言

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 可以提供更清晰、更可维护的代码结构。

标签:组合式,选项,Vue,API,风格,组件,now
From: https://blog.csdn.net/qq_44824164/article/details/139547373

相关文章

  • 【第6章】Vue生命周期
    文章目录前言一、生命周期1.两大类2.生命周期二、选项式生命周期1.代码2.效果三、组合式生命周期1.代码2.效果2.1挂载和更新2.2卸载和挂载总结前言每个Vue组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到DOM,以及......
  • FastAPI-7:框架比较(Flask、Django及FastAPI)
    7框架比较(Flask、Django及FastAPI)关于一个新的Web框架,您可能想知道的第一件事就是如何入门,而一种自上而下的方法就是定义路由(从URL和HTTP方法到函数的映射)。7.1FlaskFlask自称是微框架。它提供基本功能,你可以根据需要下载第三方软件包进行补充。它比Django小,入门时学习......
  • 【java计算机毕设】图书管理系统javaweb java MySQL springboot vue html maven送文档
    1项目功能【java计算机专业学长毕业设计分享】智慧图书管理系统JavaSpringBootvueHTMLMySQL前后端分离2项目介绍系统功能:智慧图书管理系统包括管理员和用户两种角色。管理员的功能包括在个人中心修改个人信息和密码,管理员功能模块管理管理员。基础数据管理模......
  • vue3实现在移动端时用卡片展示数据而在PC端时切换为表格展示数据
    1、根据屏幕宽度自动切换卡片和表格来展示数据2、PC端用pagination分页,移动端用v-infinite-scroll滚动分页3、准备封装成一个组件......<template><div><divv-if="isMobile"class="infinite-list"style="overflow:auto"v-infinite-scroll="loadMore&q......
  • 1688跨境是淘系对抗拼多多Temu的一把尖刀吗?|1688开放API接口接入|1688跨境代采系统搭
    1688跨境是淘系对抗拼多多Temu的一把尖刀,这一观点在电商领域内有一定的支持。1688作为阿里巴巴集团旗下的重要电商平台,长期以来专注于B2B业务,连接着大量的制造商和采购商。随着电商平台竞争的加剧,1688也在不断地进行战略调整和业务升级,尤其是在跨境电商领域的动作频频,显示出其......
  • App UI 风格展现非凡创意
    AppUI风格展现非凡创意......
  • Vue Antd Admin本地部署
    官网:https://doc.vue-antd-admin.pages.dev/github地址:https://github.com/iczer/vue-antd-admin/tree/basic 1、basic分支本地部署(开发基于此分支)克隆项目basic分支到本地->>下载依赖:npminstall->>启动项目:npmrunserve 2、master分支本地部署(研究基于此分支-试......
  • 智能小程序 Ray 开发设备信息 API 集合(一)
    getDeviceNumWithDpCode根据dpCode获取群组下具备此dpCode的设备数量。如果是一个分享的群组,请通过接口获取。引入import{device}from'@ray-js/ray';const{getDeviceNumWithDpCode}=device;需引入DeviceKit,且在>=2.4.0版本才可使用请求参数Objectobjec......
  • (三十九)Vue之集中式的状态管理机制Vuex
    这里写目录标题概念vuex的核心概念State(状态)Getters(获取器)Mutations(突变)Actions(动作)搭建vuex环境基本使用getters的使用上一篇:(三十八)Vue之插槽Slots概念Vuex是一个专为Vue.js应用程序开发的状态管理模式。对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是......
  • Vue主要使用-03
      组件通讯     组件通讯也是我们需要了解的,在我们的实际开发中,我们使用的非常多,比如父组件内的数据传入到子组件,子组件的数据传入到父组件,什么是父组件什么是子组件?父组件内包含着我们的子组件,我们的父组件可以有多个子组件,父组件就是我们使用子组件拼接......