迷新白的博客 迷新白的博客
首页
随笔
  • Vuepress
  • Springboot
  • 开发工具
  • 系统工具
读吧
  • 智能浇花系统 (opens new window)
  • 用户中心系统 (opens new window)
  • 关于
  • 友情链接
GitHub (opens new window)

迷新白

愿你平安
首页
随笔
  • Vuepress
  • Springboot
  • 开发工具
  • 系统工具
读吧
  • 智能浇花系统 (opens new window)
  • 用户中心系统 (opens new window)
  • 关于
  • 友情链接
GitHub (opens new window)
  • Vuepress

  • 前端基础

  • Vue

    • 组合式api&选项式api
      • Option API
      • Composition API
      • 直观对比
      • setup 组件
  • 前端
  • Vue
迷新白
2025-04-23
目录

组合式api&选项式api

# 01.组合式api&选项式api

在 Vue.js (opens new window) 中,组合式 API(Composition API)和选项式 API(Options API)是两种不同的编程范式,用于定义组件逻辑。

Vue2的API风格是选项式的,Vue3的API设计是组合式的。

# Option API

动图来源:大帅老猿(掘金)

data:数据 methods:方法 computed:计算属性 watch:侦听器

每一个配置项都装固定的功能,逻辑是分散的

  • 对于简单的组件,选项式 API 提供了直观且易于理解的方式。
  • 组件的各个部分(如数据、方法、计算属性等)被明确地分隔开,便于初学者理解和维护

若想新增或者修改一个需求,就需要分别修改:data、methods、computed,当功能较多时不便于维护和复用。

Option-API

如下图,增加方法时,逻辑是分散插入的

Option-API-Insert

示例:

<script>
export default {
  data() {
    return {
      message: 'Hello, Options API!',
    };
  },
  methods: {
    greet() {
      alert(this.message);
    },
  },
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# Composition API

组合式 API 是 Vue 3 引入的新特性

它允许用函数的方式组合代码,让相关功能的逻辑组织在一起

主要用于在大型组件中提高代码逻辑的可复用性。

Vue3 使用组合式 API 的地方为 setup。

Option-API-AND-Composition-API

示例:

<script>
import {ref} from 'vue';
export default {
  setup() {
    const name = ref('Composition Api');
    const showName = () => console.log('Hello ${name.value}');

    const status = ref(false);
    const toggle = () => status.value = true;

    onMounted(() => {
      showName();
    });

    return { name, status, toggle };
  },
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

有关name的逻辑都写在一起

Composition-API

# 直观对比

Vue3是向下兼容的,官方推荐使用组合式API 也兼容选项式API

img

# setup 组件

教程来源:菜鸟教程-Vue3

setup() 函数在组件创建 created() 之前执行。

setup() 函数接收两个参数 props 和 context。

第一个参数 props,它是响应式的,当传入新的 prop 时,它将被更新。

第二个参数 context 是一个普通的 JavaScript 对象,它是一个上下文对象,暴露了其它可能在 setup 中有用的值。

**注意:**在 setup 中你应该避免使用 this,因为它不会找到组件实例。setup 的调用发生在 data property、computed property 或 methods 被解析之前,所以它们无法在 setup 中被获取。

以下实例使用组合 API 定义一个计数器:

<template>
    <div>
        <p>计数器实例: {{ count }}</p>
        <input @click="myFn" type="button" value="点我加 1">
    </div>
</template>

<script> 
import {ref, onMounted} from 'vue';

export default {
    setup(){
        //定义初始值为0的变量,要使用ref方法赋值,直接赋值的话变量改变不会更新 UI
        let count = ref(0);

        // 定义点击事件 myFn
        function myFn(){
            console.log(count);
            count.value += 1;
        }
       
       // 组件被挂载时,我们用 onMounted 钩子记录一些消息
        onMounted(() => console.log('component mounted!'));

        // 外部使用组合API中定义的变量或方法,在模板中可用。
        return {count,myFn} // 返回的函数与方法的行为相同
    }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

文字写于:广东

更新时间: 2025/4/25 20:22:48
前端开发笔试练习

← 前端开发笔试练习

最近更新
01
第一次对话完善
04-27
02
保留上下文对话
04-27
03
首页完善(后端)
04-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 迷新白 | 的博客
sitemap icon by Icons8
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式