当前位置: 首页 > web >正文

setup 语法糖核心要点

1. 基本语法

<!-- 传统写法 -->
<script lang="ts">
export default {setup() {let name = '张三'function changeName() { name = '李四' }return { name, changeName }}
}
</script><!-- 语法糖写法 -->
<script setup lang="ts">
let name = '张三'
function changeName() { name = '李四' }
// 无需 return,自动暴露给模板
</script>

2. 关键特性

✅ 自动暴露

  • 顶层变量、函数自动暴露给模板
  • 无需手动 return

✅ 组件自动注册

<script setup>
import Person from './Person.vue'
// 无需在 components 中注册,直接使用
</script>
<template><Person/>  <!-- 直接使用 -->
</template>

✅ 编译器宏?

<script setup>
// Props 定义
const props = defineProps<{ message: string }>()// Emits 定义  
const emit = defineEmits<{ 'my-event': [data: string] }>()// 暴露方法给父组件
defineExpose({ publicMethod })
</script>

3. 组件名称问题

问题:<script setup> 无法直接设置组件名

<script setup name="Person">  <!-- ❌ 这样不行 -->

解决方案:使用 Vite 插件

npm i vite-plugin-vue-setup-extend -D
// vite.config.ts
import VueSetupExtend from 'vite-plugin-vue-setup-extend'export default defineConfig({plugins: [vue(), VueSetupExtend()]
})

然后就可以:

<script setup name="Person">  <!-- ✅ 现在可以了 -->

对比总结

| 特性 | 传统 setup() | <script setup> |

|------|-------------|------------------|

| 代码量 | 多(需要 return) | 少(自动暴露) |

| 组件注册 | 需要手动注册 | 自动注册 |

| 类型支持 | 一般 | 优秀 |

| 学习成本 | 中等 | 低 |

一句话总结:<script setup> 是 Vue 3 的"零配置"组合式 API,让组件编写更简洁,但需要插件支持组件命名。

http://www.xdnf.cn/news/18642.html

相关文章:

  • Windows应急响应一般思路(一)
  • MySQL 高级主题:索引优化、ORM 与数据库迁移
  • More Effective C++ 条款02:最好使用C++转型操作符
  • 【0基础PS】蒙版与剪贴蒙版详解
  • NoCode-bench:自然语言驱动功能添加的评估新基准
  • 3.4 缩略词抽取
  • 表格识别技术:通过图像处理与深度学习,将非结构化表格转化为可编辑结构化数据,推动智能化发展
  • Vue Teleport 原理解析与React Portal、 Fragment 组件
  • GEO优化专家孟庆涛发布:《GEO内容优化的四大黄金标准》
  • 普中烧录软件 PZISP,打不开,提示“应用程序无法启动,因为应用程序并行配置不正确.....”
  • 学习嵌入式第三十五天
  • Linux应用软件编程---网络编程1(目的、网络协议、网络配置、UDP编程流程)
  • APP Usage『安卓』:比系统自带强10倍!手机应用使用时长精确到秒
  • MySQL - 视图,事务和索引
  • java8 findAny()、findFirst()空指针NullPointerException问题
  • ​维基框架 (Wiki Framework) 1.1.0 版本发布​ 提供多模型AI辅助开发
  • 图像指针:高效处理像素数据的核心工具
  • Linux虚拟机安装FTP
  • AtCoder Beginner Contest 419(ABCDEF)
  • Python Flask快速实现163邮箱发送验证码
  • 防火墙双机热备
  • 数据结构之深入探索快速排序
  • docker 打包
  • syn和quote的简单使用——生成结构体
  • 网络编程8.22
  • C++---多态(一个接口多种实现)
  • YOLO算法:实时目标检测核心技术解析
  • CMake进阶:Ninja环境搭建与加速项目构建
  • UVa1472/LA4980 Hanging Hats
  • webpack开发模式与生产模式(webpack --mode=development/production“, )