Vue3.3+ 新特性 defineOptions
defineOptions
是一个宏,是在Vue3.3+中新增的新特性
defineOptions配置项
name
在Vue3.3之前,组件的默认组件名为.vue单文件组件[SFC]文件的名字,如果需要修改组件名则需要结合Options API进行配置
<!-- src/components/Com.vue -->
<script setup>
</script>
<script>
export default {
name: 'ComponentName'
}
</script>
<template>
<div>Com Component</div>
</template>
在以上的代码中,写了两个script标签,一个标签写Composition API代码,一个标签以Options API的方式配置组件名
虽然可以配置组件名,但是这种处理方式很不好
在Vue3.3+新增的defineOptions宏,可以很好的解决这个问题
<!-- src/components/Com.vue -->
<script setup>
defineOptions({
name: 'ComponentName'
})
</script>
<template>
<div>Com Component</div>
</template>
在以上代码中可以看到,defineOptions是全局的宏,无需导入
inheritAttrs
在Vue中如果在组件标签上添加属性,则会被透传到组件的根标签上,在Vue3中,组件的根标签可以存在多个,如果根标签存在多个,那么透传将失效
<!-- src/App.vue -->
<script setup>
import Com from './components/Com.vue'
</script>
<template>
<Com class="comComponentClassName" />
</template>
<!-- src/components/Com.vue -->
<script setup>
defineOptions({
name: 'ComponentName',
})
</script>
<template>
<div>Com Component</div>
</template>
解析后的代码
<div id="app" data-v-app="">
<div class="comComponentClassName">Com Component</div>
</div>
有时在开发中,并不希望组件存在透传行为,我们可以通过配置进行关闭
<!-- src/components/Com.vue -->
<script setup>
defineOptions({
name: 'ComponentName',
})
</script>
<script>
export default {
inheritAttrs: false
}
</script>
<template>
<div>Com Component</div>
</template>
以上代码,在Vue3.3之前,如需配置组件禁用透传,那么配置方式和配置组件名一样,需要在单独的script写Options API配置项
在Vue3.3+可以通过defineOptions宏进行配置
<!-- src/components/Com.vue -->
<script setup>
defineOptions({
name: 'ComponentName',
inheritAttrs: false,
})
</script>
<template>
<div>Com Component</div>
</template>
defineOptions
宏还可以配置其他内容,具体内容请查看官方文档 https://cn.vuejs.org/api/sfc-script-setup.html#defineoptions
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理