vue的【选项式api】 vs 【组合式api】
前言
伴随着新到的vue3,我们编写组件的书写方式也发生了变化。
除了底层的更新,编写方式的改变 或许才是我们最能直观感受到的。
其实就是vue3多了一种名为组合式api(composables api)的写法,相对应的式传统选项式api(options api)
组合式api简单来说就是使用setup方式编写组件

传统的 选项式api
来看看这种传统的写法:65行
<template>
<div class="home" v-if="userInfo">
<my-header/>
用户详情:{{fullUname}},{{userInfo.age}}岁
</div>
</template>
<script>
import MyHeader from '../components/my-header.vue';
export default {
// 组件:公共头部
components: { MyHeader },
// 属性: 接受属性用户id
props: {
userId: {
type: String,
default: '2022-01-01'
}
},
// 状态:用户信息
data() {
return {
userInfo: null
}
},
// 计算属性:给用户名加一个牛逼的前缀
computed: {
fullUname() {
if(this.userInfo && this.userInfo.name){
return '牛逼的' + this.userInfo.name;
}
return ''
}
},
// 监听:用户id改变
watch: {
userId: {
handler(newVal, oldVal) {
console.log('用户id变化啦:'+newVal);
},
immediate: true
}
},
// 方法:同步用户信息
methods: {
syncUserInfo(userId) {
this.userInfo = {
id: userId,
name: '小明',
age: 20
};
}
},
// 钩子:初始化
mounted() {
this.syncUserInfo(this.userId)
}
}
</script>
先进的 组合式api
来看看这种先进的写法:48行
<template>
<div class="home" v-if="userInfo">
<my-header />
用户详情:{{ fullUname }},{{ userInfo.age }}岁
</div>
</template>
<script setup>// <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。
import { ref, onMounted, watch, computed } from 'vue';
import MyHeader from '../components/my-header.vue';
// 属性: 接受属性用户id
const props = defineProps({
userId: {
type: String,
default: '2022-01-01'
}
})
// 状态:用户信息
const userInfo = ref(null);
// 计算属性:给用户名加一个牛逼的前缀
const fullUname = computed(() => {
if (userInfo.value && userInfo.value.name) {
return '牛逼的' + userInfo.value.name;
}
return ''
})
// 监听:用户id改变
watch((newVal, oldVal) => {
console.log('用户id变化啦:' + newVal);
}, { immediate: true })
// 方法:同步用户信息
const syncUserInfo = (userId) => {
userInfo.value = {
id: userId,
name: '小明',
age: 20
};
}
// 钩子:初始化
onMounted(() => {
syncUserInfo(props.userId)
})
</script>
vue的【选项式api】 vs 【组合式api】的更多相关文章
- [Vue]浅谈Vue3组合式API带来的好处以及选项API的坏处
前言 如果是经验不够多的同志在学习Vue的时候,在最开始会接触到Vue传统的方式(选项式API),后边会接触到Vue3的新方式 -- 组合式API.相信会有不少同志会陷入迷茫,因为我第一次听到新的名词 ...
- Vue3笔记(二)了解组合式API的应用与方法
一.组合式API(Composition API)的介绍 官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html 组 ...
- vue3组合式API介绍
为什么要使用Composition API? 根据官方的说法,vue3.0的变化包括性能上的改进.更小的 bundle 体积.对 TypeScript 更好的支持.用于处理大规模用例的全新 API,全 ...
- 一篇文章讲明白vue3的script setup,拥抱组合式API!
引言 vue3除了Composition API是一个亮点之外,尤大大又给我们带来了一个全新的玩意 -- script setup,对于setup大家相信都不陌生,而对于script setup有些同 ...
- vue3组合式API
vue3组合式API 为什么要用组合式API,我们来看看它是如何解决vue2的局限性的 1.vue2的局限性 当组件内容越来越多,逻辑越来越复杂,可读性就会降低,并且难以维护. vue2组件采用配置式 ...
- 解决WebStorm无法正确识别Vue3组合式API的问题
1 问题描述 Vue3的组合式API无法在WebStorm中正确识别,表现为defineComponent等无法被识别: 2 尝试方案 猜想这种问题的原因是无法正确识别对应的Vue3库,笔者相信Web ...
- Vue3 组合式 API 中获取 DOM 节点的问题
模板引用 Vue 提供了许多指令让我们可以直接操作组件的模板.但是在某些情况下,我们仍然需要访问底层 DOM 元素.在模板中添加一个特殊的属性ref就可以得到该元素. 访问模板引用 <scrip ...
- 使用flink Table &Sql api来构建批量和流式应用(2)Table API概述
从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Stream ...
- vue.js响应式原理解析与实现
vue.js响应式原理解析与实现 从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染.之后,再接触了vue.js,当时也一度很 ...
- 深入解析vue.js响应式原理与实现
vue.js响应式原理解析与实现.angularjs是通过脏检查来实现数据监测以及页面更新渲染.之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新渲染页面.vue.js ...
随机推荐
- RocketMQ消息是如何存储的
RocketMQ的消息存储是一个复杂而高效的过程,设计上充分考虑了性能和扩展性, 消息存储的主要组件包括CommitLog文件.消费队列文件(ConsumerQueue).以及索引文件(IndexFi ...
- Condition类的signal()方法底层原理
一.Condition类的signal()方法底层原理 Condition 接口的 signal 方法是用于唤醒一个在 Condition 上等待的线程.与 Object 的 notify 方法类似, ...
- 康谋分享 | AD/ADAS的性能概览:在AD/ADAS的开发与验证中“大海捞针”!
如果您希望从数百万小时的驾驶数据中查找特定的相关驾驶事件和未遂事故,以确保您的所需功能正确运行,最好的方法就是创建一个系统性能的概览分析,实现在数据日志中快速检索关注点.为此,康谋在本文将为您详细介绍 ...
- 康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(终)
在之前的文章中,我们介绍了如何构建简单的车辆模型,并基于FMI2.0构建了其FMU,其最终结构为: 今天将会和大家分享如何在aiSim中,通过UDP和aiSim车辆动力学API(Vehicle Dyn ...
- 编译执行与解释执行的区别是什么?JVM 使用哪种方式?
编译执行与解释执行的区别 1. 编译执行(Compiled Execution) 定义: 将源代码一次性翻译为机器码(目标代码),生成可直接运行的二进制文件. 特点: 翻译只发生一次,生成的目标代码可 ...
- .NET AI从0开始入门 SemanticKernel 从基础到实践
引言 本教程将带你全面了解SemanticKernel,一款强大的AI开发工具包.以下内容基于实际代码示例,帮助你快速掌握使用技巧. 资源链接: 教程代码仓库:https://github.com/A ...
- 37.1K star!MCP爆火后,这个AI模型全能工具箱开源项目让智能体开发更简单!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "Awesome MCP Servers 是当前最全面的模型上下文协议服务器集合, ...
- 一个包含 80+ C#/.NET 编程技巧实战练习开源项目!
项目介绍 C#/.NET/.NET Core编程常用语法.算法.技巧.中间件.类库.工作业务实操练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core中各种编程常用语法.算法. ...
- 【BUG】vite build、Flask运行后报错Failed to load module script. Strict MIME type checking is enforced
解决方案来源于Stack Overflow. 翻译来源于javascript - Python Flask - 错误 : "Failed to load module script. Str ...
- 基于First Order Motion与TTS的AI虚拟主播系统全流程实现教程
前言:多模态虚拟主播的技术革命 在AI内容生成领域,虚拟主播技术正经历从2D到3D.从固定模板到个性化定制的跨越式发展.本文将深入解析如何通过Python技术栈构建支持形象定制与声音克隆的AI虚拟主播 ...