Vue3.0教程003:setup语法糖

news/2025/2/1 3:52:56 标签: javascript, 前端, vue.js

文章目录

    • 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/TS
    export 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/TS
    export 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.niftyadmin.cn/n/5838993.html

相关文章

【Python】深入探索Python元类:动态生成类与对象的艺术

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 元类是Python中一个高级且强大的特性,允许开发者在类的创建过程中插入自定义逻辑,从而动态生成类和对象。本文将全面介绍Python中的元类概…

【漫话机器学习系列】070.汉明损失(Hamming Loss)

汉明损失&#xff08;Hamming Loss&#xff09; 汉明损失是多标签分类问题中的一种评价指标&#xff0c;用于衡量预测结果与实际标签之间的差异。它定义为预测错误的标签比例&#xff0c;即错误标签的个数占总标签数量的比值。 在多标签分类中&#xff0c;每个样本可以属于多…

基于springboot+vue的扶贫助农系统的设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

在彼此的根系里呼吸

爱如草木&#xff0c;需以晨露滋养&#xff0c;而非绳索捆缚。一段健康的亲密关系&#xff0c;恰似两株根系相连却各自向阳的树——风起时枝叶相触&#xff0c;晴空下共享光影&#xff0c;却始终保有向地心深处生长的自由。那些纠缠的根须是信任编织的网&#xff0c;容得下沉默…

CNN的各种知识点(一):卷积神经网络CNN通道数的理解!

卷积神经网络CNN通道数的理解&#xff01; 通道数的核心概念解析1. 通道数的本质 2. 单张灰度图的处理示例&#xff1a; 3. 批量输入的处理通道与批次的关系&#xff1a; 4. RGB三通道输入的处理计算过程&#xff1a;示例&#xff1a; 5. 通道数的实际意义6. 可视化理解(1) 单通…

一文读懂fgc之cms

一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高&#xff0c;甚至达到95仍然不触发fgc的情况&#xff0c;存在内存打满风险&#xff0c;持续触发fgc回收&#xff1b;或者内存占用率较低时触发了fgc&#xff0c;导致某些接口tp99&#xff0c;tp…

SQL99之内连接查询

SQL99是SQL语言的一个标准&#xff0c;于1999年发布。内连接查询是SQL中非常常用的一种查询方式&#xff0c;用于根据指定的条件从两个或多个表中获取相关联的数据。下面将详细介绍SQL99中的内连接查询&#xff0c;并以通熟易懂的语言进行讲解&#xff0c;同时给出代码例子、注…

(java) IO流

学习IO流之前&#xff0c;我们需要先认识file对象&#xff0c;帮助我们更好的使用IO流 1.1 file 作用&#xff1a;关联硬盘上的文件 写法&#xff1a; File(String path); (推荐)File(String parent, String child); //由父级路径&#xff0c;再子级路径拼接而成File(File p…