首页 > 其他分享 >vue3 setup语法糖详解与使用

vue3 setup语法糖详解与使用

时间:2024-08-08 09:54:44浏览次数:13  
标签:introduction setup 语法 详解 let vue3 border age

Vue3+TypeScript系列笔记

6.setup语法糖详解与使用

语法糖(Syntactic Sugar),是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。它指的是在计算机语言中添加的某种语法,这种语法对语言的编译结果和功能并没有实际影响,但却能更方便程序员使用该语言。

简单来说,语法糖就是编程语言中用来使表达更加清晰、方便或者更符合程序员编程习惯的语法,其本质上是一种便捷写法。

Vue 也提供了许多语法糖,这些是为了让开发者编写代码时更加简洁、易读和高效。这些语法糖在 Vue 的模板语法、计算属性、侦听器、指令等方面都有体现。

在上一篇笔记中,我们使用setup函数编写了第一个Vue3组合式组件,在这里我们将使用setup语法糖<script setup>简化代码、提高开发效率。

6.1 常规写法

<template>
    <div class="person">
        <h3>姓名:{{ name }}</h3>
        <h3>年龄:{{ age }}</h3>
        <h3>电话:{{ tel }}</h3>
        <h3>简介:{{ introduction }}</h3>
        <button @click="changeAge">修改年龄</button>
        <button @click="showIntroduction">修改简介</button>
    </div>
</template>

<script lang="ts">
export default {
    name: "Person",
};
</script>

<!-- 在这里相当于编写了setup函数并且进行了return -->
<script lang="ts" setup>
   
    let name = "nomi糯米";
    let age = 20;
    let tel = "18888888888";
    let introduction = "大声喊出超喜欢!";

function changeAge() {
    age += 1;
    console.log(age);
}

function showIntroduction() {
    introduction = "大声喊出超喜欢!(^ ~ ^)";
    console.log(introduction);
}
</script>

<style scoped>
.person {
    width: 500px;
    margin: 0 auto;
    border: solid #006effc1 2px;
    box-shadow: #006effc1 0 0 10px;
    border-radius: 10px;
    padding: 20px;
}

button {
    width: 80px;
    border: none;
    color: #fff;
    background-color: #006effc1;
    border-radius: 40px;
    padding: 5px;
    margin: 0 5px;
}
</style>

在此写法中我们会发现定义了两个script标签,不要感觉奇怪鸭~

第一个script标签其实只定义了组件的名称。

第二个script标签里才使用了setup语法糖,我们所需要编写的代码都在这里。

6.2 借助vite-plugin-vue-setup-extend插件写法

在上面的常规写法中我们定义了两个script标签。我们能不能只定义一个标签呢?答案是可以捏~

<script lang="ts">
export default {
    name: "Person",
};
</script>

我们可以把这一段代码直接删除,删除后项目仍然可以直接执行。但是现在我们的组件名称就无法进行控制了。如果组件名称和文件名称不一致时就会出现问题 。我们可以借助vite-plugin-vue-setup-extend插件进行扩展,完成组件名称的定义。

6.2.1 安装命令
npm install vite-plugin-vue-setup-extend -D 
  • -D表示该依赖添加在package.json里面的devDependencies

在这里插入图片描述

6.2.2 进行配置

进入vite.config.ts进行引入

import vueSetupExtend from 'vite-plugin-vue-setup-extend'

然后追加调用

plugins:[
    vue(),
    vueSetupExtend()
]

在这里插入图片描述

配置完后重启项目

6.2.3 详细代码
<template>
    <div class="person">
        <h3>姓名:{{ name }}</h3>
        <h3>年龄:{{ age }}</h3>
        <h3>电话:{{ tel }}</h3>
        <h3>简介:{{ introduction }}</h3>
        <button @click="changeAge">修改年龄</button>
        <button @click="showIntroduction">修改简介</button>
    </div>
</template>

<!-- 在这里相当于编写了setup函数并且进行了return -->
<script lang="ts" setup name="PersonNomi">
   
    let name = "nomi糯米";
    let age = 20;
    let tel = "18888888888";
    let introduction = "大声喊出超喜欢!";

function changeAge() {
    age += 1;
    console.log(age);
}

function showIntroduction() {
    introduction = "大声喊出超喜欢!(^ ~ ^)";
    console.log(introduction);
}
</script>

<style scoped>
.person {
    width: 500px;
    margin: 0 auto;
    border: solid #006effc1 2px;
    box-shadow: #006effc1 0 0 10px;
    border-radius: 10px;
    padding: 20px;
}

button {
    width: 80px;
    border: none;
    color: #fff;
    background-color: #006effc1;
    border-radius: 40px;
    padding: 5px;
    margin: 0 5px;
}
</style>

在上面的代码中,现在只剩下了一个script标签,并且在标签内多了name属性来支持组件名称的修改

在这里插入图片描述

小结

  • Vue 3 的 <script setup> 语法糖是 setup() 函数的一个语法层面的糖衣,它提供了更简洁的组件定义方式。使用 <script setup>,你可以直接在 <script setup> 标签内编写 Composition API 的代码,而无需显式地定义 setup() 函数。此外,<script setup> 中的顶层绑定(如响应式引用、计算属性等)会自动暴露给模板,无需通过 return 语句返回。

扩展

  • 如果需要指定语言可以在script中使用lang属性
  • 例如指定使用TypeScript语言<script lang="ts" setup></script>
  • vite-plugin-vue-setup-extend 是一个 Vite 插件,旨在通过扩展的方式给 Vue 3 的 setup 函数添加新的功能。虽然这个插件不是 Vue 或 Vite 官方直接提供的,并不是所有Vite项目都会广泛采用,但它为开发者提供了一种增强 setup 函数能力的途径。

欢迎大家订阅此免费专栏

往期文章:
编写第一个Vue3.0组合式组件
编写并分析Vue3.0的入口文件和根组件
Vue3项目创建及项目结构分析

标签:introduction,setup,语法,详解,let,vue3,border,age
From: https://blog.csdn.net/cute_neko/article/details/141004440

相关文章

  • 图片热区。vue3+ts和vue3+js写法(js没写完数据,功能完善)
    下面我会将完整的代码放进去,一些样式使用的是全局样式如flex-row,flex-1,size-16,re,tc,等,不过不影响功能使用。废话不多说,上代码vue3+ts<!--热区组件--><template><el-dialogv-model="dialog_visible"append-to-bodyfullscreen@close="close_event"><tem......
  • 神经网络之卷积篇:详解更多边缘检测内容(More edge detection)
    详解更多边缘检测内容已经见识到用卷积运算实现垂直边缘检测,在本博客中,将看到如何区分正边和负边,这实际就是由亮到暗与由暗到亮的区别,也就是边缘的过渡。还能了解到其他类型的边缘检测以及如何去实现这些算法,而不要总想着去自己编写一个边缘检测程序。这张6×6的图片,左边较亮,而......
  • 并查集详解
    并查集并查集是一种树形数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。具体详解见此并查集本身是真的太板了。。普及-以下的题基本全是板。直接见例题吧:板子一【模板】并查集题目描述如题,现在有一个并查集,你需要完成合并和查询操作。【】输入格式】第......
  • xss.haozi靶场详解
    0x00直接输入即可<script>alert(1)</script>0x01正常输入发现被下面注释了只需要加个闭合即可</textarea><script>alert(1)</script>0x02这关就是闭合问题"><script>alert(1)</script>0x03正常输入发现()被过滤了将括号改为反引号即可<script>alert`1`&l......
  • Kotlin 控制流和数组操作详解
    Kotlinwhen与编写许多if..else表达式相比,您可以使用when表达式,它更易读。它用于选择要执行的多个代码块中的一个:示例使用星期几的编号来计算星期几的名称:valday=4valresult=when(day){1->"Monday"2->"Tuesday"3->"Wednesday"4->"Thursday......
  • 知识分享 | 详解整车区域控制器(ZCU)
    ​随着智能网联汽车技术的迅猛发展,整车区域控制器ZCU(ZoneControlUnit)作为汽车电子电气架构中的核心组件,其重要性日益凸显。ZCU不仅作为区域数据中心、IO中心及配电中心,在车辆动力、传感器管理、信息娱乐等方面发挥着关键作用,还通过高效的数据处理、信号控制及电力分配,为智能网......
  • jeecg-vue3, BasicTable与抽屉useDrawer()的简单使用
    需求:分屏情况下,根据传入参数不同查看申请材料1.实现效果点击申请材料弹出,点击取消或点击空白处,抽屉消失2.代码实现2.1files.vue实现<template><divclass="container"><a-button@click="click('sqcl')"style="margin-left:5px;">申请材料</a-b......
  • 内存重叠以及memcpy和memmove函数详解
    内存重叠当我们进行内存拷贝(memcpy函数)时或者在自己实现内存拷贝函数strcpy时,如果存在目标地址在原地址的范围内就造成了内存重叠。一开始看到这个名词的时候,确实有点难以理解,经过学习,我利用以下的例子来说明内存重叠问题。首先,先介绍一下memcpy和memmove函数memcpy和mem......
  • uniapp Vue3版本使用jweixin-module报错
    把uniapp从Vue2版本选择到Vue3版本编译开发  改用到Vue3使用:varjweixin=require('jweixin-module')会编译报错:requireisnotdefined,没有require模块.改成import的话,由于jweixin-module不支持export写法,所以引入也不能成功1import *asjweixinfr......
  • C语言 操作符详解
    目录一、操作符的分类二、二进制和进制转换 2.1二进制转十进制 2.2二进制转八进制 2.3二进制转十六进制 三、原码、反码、补码四、移位操作符4.1左移操作符​编辑 4.2右移操作符五、位操作符按位与:&按位或:|按位异或:^按位取反:~六、逗号表达式七、操作......