当前位置: 首页 > news >正文

【vue for beginner】Composition API 和 Options API 的区别

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

vue2中的方式叫Options API ,vue3中叫Composition API。
Composition API是大势所趋,但是也不代表Options API 就不好,只是前端发展到一定的程度,之前的Options API写法是一个痛点,每次修改对应的功能需要在文件中依次找到data、methods去修改,效率很低,所以出现了Composition API。

Option API图解

在这里插入图片描述

Compostion API图解

在这里插入图片描述

💻代码结构

Options API

┌─────────────────────────┐
│ Vue Component │
├─────────────────────────┤
│ data() │
│ ┌─────────────────────┐ │
│ │ { │ │
│ │ message: │ │
│ │ count: 0 │ │
│ │ } │ │
│ └─────────────────────┘ │
├─────────────────────────┤
│ methods │
│ ┌─────────────────────┐ │
│ │ { │ │
│ │ increment() │ │
│ │ } │ │
│ └─────────────────────┘ │
├─────────────────────────┤
│ computed │
│ ┌─────────────────────┐ │
│ │ { │ │
│ │ computedValue │ │
│ │ } │ │
│ └─────────────────────┘ │
└─────────────────────────┘

Composition API

┌─────────────────────────┐
│ Vue Component │
├─────────────────────────┤
│ setup() │
│ ┌─────────────────────┐ │
│ │ const message = │ │
│ │ ref(“Hello, Vue!”)││
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ const count = │ │
│ │ ref(0) │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ const increment = │ │
│ │ () => { │ │
│ │ count.value++; │ │
│ │ } │ │
│ └─────────────────────┘ │
├─────────────────────────┤
│ return │
│ ┌─────────────────────┐ │
│ │ { │ │
│ │ message, │ │
│ │ increment │ │
│ │ } │ │
│ └─────────────────────┘ │
└─────────────────────────┘

🔍理解

  • 只要看到data、methods、computed就是vue2的写法
  • 只要看到setup就是vue3的写法
  • 项目里有人可能会2种方法混用,别慌,看到哪个关键字就按照哪个逻辑分析
  • 非特殊情况,不要写vue2的代码了,迟早要被过度到vue3

Composition API 和 Options API 的区别

定义方式

Options API: 使用对象选项定义组件的各个部分。
Composition API: 使用函数来组织逻辑,更加灵活。

逻辑组织

Options API: 逻辑通常分散在 data, methods, computed 等选项中。
Composition API: 逻辑可以集中在一个函数中,便于复用和维护。

示例对比

Options API 示例

<template><div><h1>{{ message }}</h1><button @click="increment">增加</button></div>
</template><script>
export default {data() {return {message: "Hello, Vue!",count: 0,};},methods: {increment() {this.count++;this.message = `你点击了 ${this.count}`;},},
};
</script>

Composition API 示例

<template><div><h1>{{ message }}</h1><button @click="increment">增加</button></div>
</template><script>
import { ref } from 'vue';export default {setup() {const message = ref("Hello, Vue!");const count = ref(0);const increment = () => {count.value++;message.value = `你点击了 ${count.value}`;};return {message,increment,};},
};
</script>

关键区别总结

数据定义:

Options API: 使用 data() 返回一个对象。
Composition API: 使用 ref() 或 reactive() 来定义响应式数据。

方法定义:

Options API: 在 methods 中定义。
Composition API: 直接在 setup() 函数中定义。

逻辑复用:

Options API: 使用 mixins。
Composition API: 使用组合函数(composable functions)实现逻辑复用

💡 Tips小知识点

  • 要注意在vue3种setup函数必须把需要用到的方法、数据都return出去,不然无法使用
  • vue2中的this关键字在vue3中不支持
  • setup无法访问到option api写法data、method中的数据和方法,不向前兼容,原理上来说setup执行在beforeEach之前
  • option api的method和data中可以访问到setup定义的数据

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

http://www.lryc.cn/news/493609.html

相关文章:

  • jmeter5.6.3安装教程
  • 关于Spring基础了解
  • 输入json 达到预览效果
  • DataLoade类与list ,iterator ,yield的用法
  • model_selection.train_test_split函数介绍
  • Springboot 读取 resource 目录下的Excel文件并下载
  • SQL EXISTS 子句的深入解析
  • 33.Java冒泡排序
  • Docker容器ping不通外网问题排查及解决
  • JavaScript 库 number-precision 如何使用?
  • faiss库中ivf-sq(ScalarQuantizer,标量量化)代码解读-2
  • 性能测试工具Grafana、InfluxDB和Collectd的搭建
  • 【ruby on rails】dup、deep_dup、clone的区别
  • 原生微信小程序画表格
  • Python实现IP代理池
  • 互联网直播/点播EasyDSS视频推拉流平台视频点播有哪些技术特点?
  • 32.4 prometheus存储磁盘数据结构和存储参数
  • C7.【C++ Cont】范围for的使用和auto关键字
  • 联通云服务器部署老项目tomcat记录
  • 剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍
  • el-dialog中调用resetFields()方法重置表单报错
  • 分布式系统接口,如何避免重复提交
  • AI 声音:数字音频、语音识别、TTS 简介与使用示例
  • 【论文速读】| 人工智能驱动的网络威胁情报自动化
  • 什么是域名监控?
  • vue3 发送 axios 请求时没有接受到响应数据
  • 前端使用fontfaceobserver库实现字体设置
  • 【人工智能】Python常用库-PyTorch常用方法教程
  • Android Studio安装TalkX AI编程助手
  • #渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞