vue3 script setup 语法糖用了才知道有多爽 (一)

这篇具有很好参考价值的文章主要介绍了vue3 script setup 语法糖用了才知道有多爽 (一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


这里是完整的目录图片,由于整篇文章篇幅太长,拆分成了几篇来展示
<script setup>,前端相关,vue.js,javascript,前端

前言

vue3 使用的越来越广泛, 公司项目开始使用 vue3 ,在 vue 3.2 之后新加入了 script setup 语法糖,上手开始看项目发现对于语法糖的使用有一些迷惑,特此整理,在整理这些内容的同时查阅了大量的资料,自己在这个过程中,对于 vue3 的理解也更深了一些 ~ 希望各位也可以从中有所收获
因为很多地方都不太理解 , 本文的分析程度比较细致 , 甚至可能到了有些太细致的程度 ~


一、什么是setup script

<script setup> 是在单文件组件中使用组合式 API 的 " 编译时 " 语法糖 ,当同时使用 单文件组件 以及 组合式 API 的时 候, <script setup> 是更为推荐的一种语法方式,它有着更多的优势
但在说这些优势之前需要先说一下,从 Vue 3.2 版本之后才开始加入了 <script setup> 语法糖,这一语法糖的加入让 Vue3 的写法有了大大的改变 ! 相对于原本 Vue 3 的语法,简单了很多很多很多 !

因为 <script setup> 语法糖是依赖于 Vue3 的,所以如果对 Vue3 还没有太多的了解,建议先学习下 Vue3 之后再开始学习 <script setup> 语法糖,直接上来搞这个理解起来容易混乱 [ 本人因为公司使用的是 Vue3+TS ,但是在此之前一直用的是 Vue2 ,直接开始看项目之后属实懵逼了,建议各位同仁循序渐进啊 ~ ]

以下是官方的介绍
<script setup>,前端相关,vue.js,javascript,前端
在 Vue 3 当中我自己感觉最鲜明的变化就是 Vue 3 中引入了组合式 Api (composition API)
但是使用 Vue3 组合式 API 的时候感觉整个过程比较繁琐

  • 在 setup () 当中定义 ⇒ setup() 中 return ⇒ 模板中使用

如果需要定义一个方法的话,模板中使用这个方法的时候,需要在 setup 函数中将它返回,模板中需要用到的大量的方法和属性都需要一 一返回 , 这个过程有点难受,时不时的就会漏掉返回这一步导致变量未定义或者 xx not a function 的错误

<script>
import {defineComponent , reactive, ref} from 'vue'
export default defineComponent({
  setup(){
    // 基本类型变量
    const name = ref("你好")
    const age = ref(2023)
    // 引用类型变量
    const book = reactive({name:"月亮",age:"1919"})

    // 将变量返回
    return{
      name,
      age,
      book
    }
  }
})
</script>

<script setup> 作为 setup 方法的语法糖,在书写上更加简洁方便,在 setup 函数中,所有 ES 模块导出都被认为是暴露给上下文的值,在 <script setup> 写法中,不需要再手动写 setup(){} .可以直接在 script 标签中书写 setup 的内容,并且不需要做 return 返回处理 .
解决了 setup 需要频繁的将 声明的变量 ,函数 ,以及 import 引入的内容通过 return 向外暴漏,才能在 <template/> 中使用的问题 , setup语法糖的形式最为便捷而且更符合开发者习惯

所以使用 <script setup> 的时候

二、如何使用 setup script 语法糖

基本语法
需要启用 <script setup> 语法糖,需要在 <script> 代码块加上 setup 属性
也就是说 : 只需在 script 标签上写上 setup 就可以了

<script setup>
	console.log('hello script setup')
</script>

里面的代码会被编译成组件 setup() 函数当中的内容
<script setup><script> 的执行时机是不同的

  • 普通的 <script> 只会在组件第一次被引入的时候执行一次
  • <script setup> 中的代码会在每次组件实例被创建的时候执行

三、setup script 有什么用

1. 属性和方法无需返回

之前说 组合式API (composition API ) 写起来有些繁琐的原因在于需要手动返回模板需要的属性和方法,而在 setup script 中可以省略这一步骤
setup script 不需要写 return ,所以直接声明数据,方法就可以在模板中直接使用了

属性

<script setup>,前端相关,vue.js,javascript,前端

<template>
  <div>
    <!-- 在模板中使用变量 -->
    <div> {{ name }} </div>
    <div> {{ age }} </div>
    <div> {{ book.name }} </div>
    <div> {{ book.age }} </div>
  </div>
</template>

Vue 3 setup() 语法
传统写法中我们需要在 setup 当中定义变量,并在最后 return

<script>
import {defineComponent , reactive, ref} from 'vue'
export default defineComponent({
  setup(){
    // 基本数据类型的响应式
    const name = ref("你好")
    const age = ref(2023)
    // 复杂数据类型的响应式
    const book = reactive({name:"月亮",age:"1919"})

    // 将变量返回
    return{
      name,
      age,
      book
    }
  }
})
</script>

<script setup> 语法糖的写法
不再需要对定义的变量进行 return ,我们定义的 ref reactive 变量可以直接在 template 当中直接使用

<script setup>
import {reactive, ref} from 'vue'
    // 基本类型变量
    const name = ref("你好")
    const age = ref(2023)
    // 引用类型变量
    const book = reactive({name:"月亮",age:"1919"})

</script>

方法

<script setup>,前端相关,vue.js,javascript,前端

<template>
  <div>
    <!-- 在模板中使用变量 -->
    <div @click="showMessage">点击我输出信息</div>
  </div>
</template>

Vue 3 setup() 语法
传统写法中我们需要在 setup 当中定义方法,并在最后 return

<script>
import {defineComponent} from 'vue'
export default defineComponent({
  setup(){
    const showMessage = ()=>{
      console.log("hi vue3")
    }
    // 将变量返回
    return{
      showMessage
    }
  }
})
</script>

<script setup> 语法糖的写法
不再需要对定义的方法进行 return ,我们定义的方法可以直接在 template 当中直接使用

<script setup>
    const showMessage = ()=>{
      console.log("hi vue3")
    }
</script>

小结

上方的 demo 对比可以看到完全省略了 return 中的所有内容, 嗷呜,是不是非常方便呢?
<script setup> 标签中声明的 “顶层的绑定” – [包括 变量,函数声明,以及 import 引入的内容] 都是可以在模板中直接使用的
<script setup> 标签中需要声明响应式的变量,就需要使用响应式 API 来创建 ( ref() reactive() …) , 如果在 <script setup> 标签中需要用 ref() reactive() 同样是需要手动引入ref 和 reactive 的 import {reactive, ref} from 'vue'
script setup 和 setup() 函数的返回值一样, ref 在模板中使用的时候会自动被解包文章来源地址https://www.toymoban.com/news/detail-602749.html

到了这里,关于vue3 script setup 语法糖用了才知道有多爽 (一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3中<script setup> 和 setup函数的区别

    script setup  是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。当同时使用 SFC 与组合式 API 时该语法是默认推荐。相比于普通的  script  语法,它具有更多优势: 更少的样板内容,更简洁的代码。 能够使用纯 TypeScript 声明 props 和自定义事件。 更好的运行时性能 (其模板

    2024年02月04日
    浏览(32)
  • Vue语法糖<script setup>详解,用最快的方式让你看懂和<script>的区别

    Vue3出来已经3年了,但是前两天在百度上搜索有关setup语法糖的细节时,发现很多博客关于语法糖细节部分,还是讲的很粗糙,因此决定自己来写一篇入门的博客,方便大家快速上手。 它是Vue3中的一个语法糖,熟悉vue3脚手架的同学,应该一眼就能看出来,vite脚手架默认创建

    2024年03月15日
    浏览(29)
  • Vue3实战06-CompositionAPI+<script setup>好在哪?

    Vue 3 的Composition API + 这就把清单功能独立出来,可在任意需要的地方复用。 基于组件去搭建应用,可实现对业务逻辑的复用。如有其他页面也需要用到这功能,直接复用。 然后,就可基于新语法实现清单应用。 把之前的代码移植过来后,使用ref包裹的响应式数据。修改tit

    2024年02月09日
    浏览(28)
  • vue3组合式api <script setup> props 父子组件的写法

    父组件传入子组个的变量, 子组件是无法直接修改的, 只能通过 emit的方式, 让父组件修改, 之后子组件更新 父组件的写法没有变, 子组件的写法就有很大的变化了

    2024年02月10日
    浏览(34)
  • Vue3 项目中使用setup()函数报错,script setup cannot contain ES module exports

    当使用vue3+vite使用语法糖setup时,要注意写法. 第一种写法就是 script 标签里面配置 setup,另一种是:export default 类里配置 setup() 方法, 我们只需要使用一种方法即可,混用了就会报错了。 解决: 第一种 script setup import {ref} from \\\'vue\\\' import { Toast } from \\\'vant\\\'; import Index from \\\'../pag

    2023年04月08日
    浏览(40)
  • Vue 3 + Ts 钩子函数(hooks)的用法,以<script setup lang=“ts“/>语法糖形式 #reactive #ref

    在上述代码中,使用了reactive函数来创建一个响应式的state对象,其中包含一个count属性。还定义了一个increment方法,用于增加count的值。在组件挂载后,使用onMounted钩子函数输出了一个初始化信息。 最后,通过export将state和increment导出,以便在模板中使用。 在这个例子

    2024年01月24日
    浏览(26)
  • 【vue3】基础知识点-setup语法糖

    学习vue3,都会从基础知识点学起。了解setup函数,ref,recative,watch、comptued、pinia等如何使用 今天说vue3组合式api,setup函数 在学习过程中一开始接触到的是这样的,定义数据且都要通过return返回 最新接触到的是这样的 两种不同的写法,那区别是什么呢? 其实在script标签上直

    2024年02月13日
    浏览(31)
  • 学习script setup 语法糖

    setup 函数 是一个组件选项,在 创建组件之前 执行,一旦 props 被解析,并作组合式 API 的入口。 setup 选项是一个接收 props 和 context 的函数。此外,我们将 setup 返回的所有内容都暴露给组件的其余部分 (计算属性、方法、生命周期钩子等等) 以及组件的模板。 新的 setup 选项是

    2024年02月06日
    浏览(26)
  • vue3 组件间通信的方式(setup语法糖写法)

    该方式用于父传子,父组件以数据绑定的形式声明要传递的数据,子组件通过defineProps()方法创建props对象,即可拿到父组件传来的数据。 2. emit方式 emit 方式也是Vue中最常见的组件通信方式,该方式用于 子传父。 3、defineExpose 利用defineExpose+ref 可以得到组件里的方法和变量

    2024年02月12日
    浏览(32)
  • 你不知道的vue3:使用runWithContext实现在非 setup 期间使用inject

    日常开发时有些特殊的场景需要在非 setup 期间调用 inject 函数,比如app中使用 provide 注入的配置信息需要在发送 http 请求时带上传给后端。对此我们希望不在每个发起请求的地方去修改,而是在发起请求前的拦截进行统一处理,对此我们就需要在拦截请求的函数中使用 injec

    2024年01月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包