谈谈我对Vue 3 中的 Composition、Composition API 和 Composables 之间的区别的理解

简介: 谈谈我对Vue 3 中的 Composition、Composition API 和 Composables 之间的区别的理解

前言


Vue3最显著的变化之一是引入了 Composition API,它提供了一种更灵活、更强大的方式来组织和复用代码。

在本文中,我将详细探讨 Vue 3 中的 Composition、Composition API 和 Composables 之间的区别,并提供详细的步骤和代码示例,帮助你更好地理解这些概念。

Composition API

什么是 Composition API

Composition API 是 Vue 3 引入的一套新的 API,用于组织和复用组件逻辑。它通过 setup 函数来定义组件的逻辑,使得我们可以更灵活地使用 JavaScript 特性来组织代码。

Composition API 的核心概念

  • setup 函数:是 Composition API 的入口,在组件实例创建之前执行。它返回一个对象,该对象中的属性和方法将被暴露给模板使用。
  • • 响应式 API:如 refreactivecomputedwatch,用于创建和管理响应式状态。
  • • 生命周期钩子:如 onMountedonUpdatedonUnmounted,用于处理组件的生命周期事件。

示例代码

下面是一个使用 Composition API 的简单示例:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>
<script>
import { ref } from 'vue'
export default {
  setup() {
    const count = ref(0)
    const increment = () => {
      count.value++
    }
    return {
      count,
      increment
    }
  }
}
</script>

在这个示例中,setup 函数返回的 countincrement 被暴露给模板使用。我们使用 ref 创建了一个响应式变量 count,并定义了一个 increment 方法来增加计数。

image.png

Composition

什么是 Composition

Composition 是一种将逻辑和功能分离成独立的、可重用部分的概念。在 Vue 3 中,Composition API 实现了这一概念,使得我们可以将组件逻辑组织成独立的模块,称为 Composables。

Composition 的优势

  • • 模块化:将逻辑分离成独立模块,增强代码的可读性和可维护性。
  • • 复用性:独立的逻辑模块可以在多个组件中复用,减少代码重复。
  • • 灵活性:更灵活地组合和管理逻辑,使代码更易于扩展和修改。

示例代码

下面是一个使用 Composition 将逻辑分离成独立模块的示例:

// useCounter.js
import { ref } from 'vue'
export function useCounter() {
  const count = ref(0)
  const increment = () => {
    count.value++
  }
  return {
    count,
    increment
  }
}
<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>
<script>
import { useCounter } from './useCounter'
export default {
  setup() {
    const { count, increment } = useCounter()
    return {
      count,
      increment
    }
  }
}
</script>

在这个示例中,我们将计数逻辑提取到 useCounter 函数中,使其成为一个独立的模块。然后在组件中使用这个模块,实现逻辑的复用。

Composables

什么是 Composables

Composables 是使用 Composition API 创建的函数,用于封装和复用逻辑。它们通常以 use 开头,表示这是一个可复用的逻辑模块。例如,useCounter 是一个计数逻辑的 Composable。

Composables 的优势

  • • 逻辑复用:将逻辑封装在 Composables 中,可以在不同的组件中复用,减少代码重复。
  • • 易于测试:独立的逻辑模块更易于测试和调试。
  • • 增强可维护性:将复杂的逻辑分解成简单的、可复用的函数,提高代码的可维护性。

示例代码

下面是一个使用 Composables 的示例:

// useFetch.js
import { ref, onMounted } from 'vue'
export function useFetch(url) {
  const data = ref(null)
  const error = ref(null)
  const fetchData = async () => {
    try {
      const response = await fetch(url)
      data.value = await response.json()
    } catch (err) {
      error.value = err
    }
  }
  onMounted(fetchData)
  return {
    data,
    error,
    fetchData
  }
}
<template>
  <div>
    <div v-if="error">{{ error.message }}</div>
    <div v-else-if="data">{{ data }}</div>
    <div v-else>Loading...</div>
  </div>
</template>
<script>
import { useFetch } from './useFetch'
export default {
  setup() {
    const { data, error } = useFetch('https://api.example.com/data')
    return {
      data,
      error
    }
  }
}
</script>

在这个示例中,我们创建了一个 useFetch Composable,用于封装数据获取的逻辑。然后在组件中使用这个 Composable,实现数据获取功能的复用。

image.png

总结

Vue 3 中的 Composition、Composition API 和 Composables 提供了一种全新的方式来组织和复用代码,使得开发复杂应用变得更加容易。通过使用 Composition API,我们可以将组件的逻辑组织成独立的模块(Composables),从而增强代码的模块化、复用性和可维护性。

主要区别

  • Composition 是一种组织和复用代码的理念,通过将逻辑分离成独立的模块,实现代码的模块化和复用。
  • Composition API 是 Vue 3 提供的一套 API,用于实现 Composition 的理念。它通过 setup 函数和响应式 API 来组织和管理组件的逻辑。
  • Composables 是使用 Composition API 创建的函数,用于封装和复用逻辑。它们通常以 use 开头,表示这是一个可复用的逻辑模块。

通过了解和使用这些概念和工具,开发者可以更高效地构建复杂应用,提高代码的质量和可维护性。

相关文章
|
1月前
|
JSON 数据挖掘 API
淘宝详情API接口与高级详情API接口用json返回数据区别
淘宝“商品详情API”与“高级商品API”主要区别在于数据深度、字段丰富度及适用场景。前者适用于轻量级导购展示,后者支持详情页展示与深度分析,需根据业务需求选择使用。
|
1月前
|
搜索推荐 数据挖掘 API
【干货满满】阿里妈妈API接口和淘宝联盟的接口有哪些区别
阿里妈妈API覆盖全链路营销,包含广告投放、数据分析及淘宝客推广,适用于品牌商家与营销工具;淘宝联盟API则专注淘宝客业务,提供商品查询、链接生成与佣金结算等功能,适合推广者使用。两者在功能、权限及应用场景上各有侧重。
|
3月前
|
运维 数据挖掘 API
官方api和第三方api有什么区别
官方API与第三方API是电商商家常用的两种接口类型。官方API由电商平台提供,功能全面、集成度高、安全性强且稳定性好,适合处理核心业务;而第三方API由外部服务商提供,专注特定功能如支付、物流等,灵活性和扩展性更强,但安全性和稳定性参差不齐。商家应根据自身需求、预算及技术能力选择合适的API,确保数据安全与合规性,同时优化运营流程、提升用户体验并拓展业务功能,在竞争中占据优势。
215 0
|
10月前
|
JavaScript 前端开发 API
Vue.js 3中的Composition API:提升你的组件开发体验
Vue.js 3中的Composition API:提升你的组件开发体验
315 1
|
10月前
|
JavaScript 前端开发 API
Vue 3新特性详解:Composition API的威力
【10月更文挑战第25天】Vue 3 引入的 Composition API 是一组用于组织和复用组件逻辑的新 API。相比 Options API,它提供了更灵活的结构,便于逻辑复用和代码组织,特别适合复杂组件。本文将探讨 Composition API 的优势,并通过示例代码展示其基本用法,帮助开发者更好地理解和应用这一强大工具。
225 2
|
11月前
|
API
《vue3第四章》Composition API 的优势,包含Options API 存在的问题、Composition API 的优势
《vue3第四章》Composition API 的优势,包含Options API 存在的问题、Composition API 的优势
86 0
|
11月前
|
JavaScript 前端开发 API
《vue3第六章》其他,包含:全局API的转移、其他改变
《vue3第六章》其他,包含:全局API的转移、其他改变
84 0
|
11月前
|
编译器 API 定位技术
API和SDK的区别
API(应用程序编程接口)和SDK(软件开发工具包)的主要区别在于范围、内容、抽象程度及使用方式。API定义了软件组件间的交互规则,范围较窄,更抽象;而SDK提供了一整套开发工具,包括API、编译器、调试器等,范围广泛,具体且实用,有助于提高开发效率。
|
1月前
|
JSON API 数据格式
淘宝/天猫图片搜索API接口,json返回数据。
淘宝/天猫平台虽未开放直接的图片搜索API,但可通过阿里妈妈淘宝联盟或天猫开放平台接口实现类似功能。本文提供基于淘宝联盟的图片关联商品搜索Curl示例及JSON响应说明,适用于已获权限的开发者。如需更高精度搜索,可选用阿里云视觉智能API。
|
1月前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。