Vue3.0教程003:setup语法糖

news/2025/2/5 23:34:47/

文章目录

    • 3.1 OptionsAPI与CompositionAPI
      • Options API的弊端
      • Composition API的优势
    • 3.2 拉开序幕的setup
    • 3.3 setup语法糖

3.1 OptionsAPI与CompositionAPI

  • vue2的API设计是Options风格的
  • vue3的API设计是Composition(组合)风格的

Options API的弊端

Options类型的API,数据、方法、计算属性等,是分散在:datamethodscomputed中的,若想新增或者修改一个需求,就需要分别修改:datamethodscomputed,不便于维护和复用。

Composition API的优势

可以用函数的方式,更加优雅的组织代码,让相关功能的代码更加有序的组织在一起。

3.2 拉开序幕的setup

修改Person.vue的代码

<template><div class="person"><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><button @click="changeName">修改名字</button><button @click="changeAge">修改年龄</button><button @click="showTel">查看联系方式</button></div>
</template><script lang="ts">// JS/TSexport default{name: 'Person',setup(){// 数据let name = '张三'; // 此时的name不是响应式的let age = 18; // 此时的age不是响应式的let tel = '13838386996'; // 此时的tel不是响应式的// 方法function changeName(){name = '李四'; // name确实改了,但是不是响应式的}function changeAge(){age += 1; // age确实改了,但是不是响应式的}function showTel(){alert(tel);}// 把数据和方法交出去,才能用return {name, age, changeName, changeAge, showTel}}}
</script><style scoped>/* 样式 */.person{background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;}button{margin: 0 5px;}
</style>

注意1:

// 把数据和方法交出去,才能用
return {name, age, changeName, changeAge, showTel}

注意2:

刷新浏览器,发现点击【修改姓名】和【修改年龄】按钮,发现页面无变化,这是因为此时的数据定义式不是响应式的,点击按钮之后,nameage确实修改了,但是因为不是响应式的,所以页面无变化。后续会解决这个问题。

注意3:

setup的返回值也可以是一个渲染函数:

return ()=> '嘿嘿'

注意4:

setup data :

  • data可以访问到setup中的数据
  • setup访问不到data中的数据

3.3 setup语法糖

当定义的数据和方法较多的时候,都要用return进行返回,就显得十分不方便。接下来介绍setup语法糖,来解决问题。

通过定义如下代码,直接在其中定义数据和方法,然后用{{}}可以直接访问到,避免了用return返回:

<!--配置组合式API-->
<script lang="ts" setup>let a = 7;
</script>

完整代码:

<template><div class="person"><h2>{{a}}</h2></div>
</template><!--配置组件名-->
<script lang="ts">// JS/TSexport default{name: 'Person',}
</script><!--配置组合式API-->
<script lang="ts" setup>let a = 7;
</script><style scoped>/* 样式 */.person{background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;}button{margin: 0 5px;}
</style>

实现效果:

在这里插入图片描述

注意:

上面定义了两个script标签,一个用来配置组件名,一个用来配置组合式API

那么如果,想要只写一个script标签,不写配置组件名的标签,可以通过如下方法解决:

安装插件:

npm install vite-plugin-vue-setup-extend -D

然后在vite.config.js中配置如下代码:

在这里插入图片描述

接着修改script代码即可:

<!--&lt;!&ndash;配置组件名&ndash;&gt;-->
<!--<script lang="ts">-->
<!--    // JS/TS-->
<!--    export default{-->
<!--        name: 'Person',-->
<!--    }-->
<!--</script>--><!--配置组合式API-->
<script lang="ts" setup name="Person">let a = 7;
</script>

注意:vue3.3版本以上的,不需要安装插件,可以直接修改script代码即可。

比较推荐,写两个script标签。


http://www.ppmy.cn/news/1569637.html

相关文章

基于WiFi的智能照明控制系统的设计与实现(论文+源码)

1系统方案设计 本设计智能照明控制系统&#xff0c;结合STM32F103单片机、光照检测模块、显示模块、按键模块、太阳能板、LED灯模块、WIFI模块等器件构成整个系统&#xff0c;在功能上可以实现光照强度检测&#xff0c;并且在自动模式下可以自动调节照明亮度&#xff0c;在手动…

如何本地部署DeepSeek

第一步&#xff1a;安装ollama https://ollama.com/download 打开官网&#xff0c;选择对应版本 第二步&#xff1a;选择合适的模型 https://ollama.com/ 模型名称中的 1.5B、7B、8B 等数字代表模型的参数量&#xff08;Parameters&#xff09;&#xff0c;其中 B 是英文 B…

【人工智能】使用Python和Hugging Face构建情感分析应用:从模型训练到Web部署

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的重要任务,它通过分析文本来判断情绪或观点的倾向性。近年来,预训练语言模型如BERT、GPT等在情感分析任…

具身智能-强化学习-强化学习基础-马尔可夫

文章目录 参考强化学习基础强化学习特点reward函数两种强化学习两种策略&#xff1a;探索&#xff08;Exploration&#xff09; vs. 利用&#xff08;Exploitation&#xff09;gym库的使用 马尔可夫马尔可夫过程马尔可夫奖励过程&#xff08;Markov Reward Process, MRP&#x…

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…

使用WGAN(Wasserstein Generative Adversarial Network)网络对天然和爆破的地震波形图进行分类

项目概述 本项目旨在使用WGAN(Wasserstein Generative Adversarial Network)网络对天然和爆破的地震波形图进行分类。WGAN是一种生成对抗网络的变体,它通过引入Wasserstein距离来改善传统GAN训练不稳定的问题。我们将利用地震波形图数据训练WGAN的判别器,使其能够准确区分…

MySQL锁类型(详解)

锁的分类图&#xff0c;如下&#xff1a; 锁操作类型划分 读锁 : 也称为共享锁 、英文用S表示。针对同一份数据&#xff0c;多个事务的读操作可以同时进行而不会互相影响&#xff0c;相互不阻塞的。 写锁 : 也称为排他锁 、英文用X表示。当前写操作没有完成前&#xff0c;它会…

操作系统和中间件的信息收集

在浏览器中收集操作系统与中间件信息时&#xff0c;主要通过客户端JavaScript&#xff08;用于操作系统/浏览器信息&#xff09;和服务器端脚本&#xff08;用于中间件信息&#xff09;实现。以下是分步指南&#xff1a; 一、客户端操作系统信息收集&#xff08;JavaScript&am…