You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue的<script setup>语法中定义name与components?

在Vue的<script setup>中定义组件name和components的方法

一、组件components的注册

在<script setup>语法里,完全不需要手动在components选项中注册组件——只要你通过import导入了组件,就可以直接在模板里使用。比如你代码里的HelloWorld,已经完成导入,所以模板里的<HelloWorld>可以正常渲染,你写的components: { HelloWorld }属于多余代码,直接删掉就行。

二、组件name的定义

<script setup>本身没有直接的语法来定义组件name,有两种实用方式:

方式1:新增普通<script>标签(兼容所有Vue3版本)

在组件里添加一个不带setup属性的<script>标签,专门用来导出name:

<script>
export default {
  name: 'App'
}
</script>

方式2:使用defineOptions(Vue3.3及以上版本支持)

如果你的Vue版本是3.3或更高,可以直接在<script setup>里用defineOptions定义name,无需额外的script标签:

<script setup>
// 导入后直接调用defineOptions
defineOptions({
  name: 'App'
})
</script>

三、修正后的完整App.vue代码

以下是两种方式对应的修正代码:

方式1(兼容所有Vue3版本)

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
  <span>greetingMessage:{{ greetingMessage }}</span>
</template>

<script>
export default {
  name: 'App'
}
</script>

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import { defineProps } from 'vue'

const props = defineProps(['foo','greetingMessage'])

console.log("props:",props)
console.log("props.foo:",props.foo)
console.log("props.greetingMessage:",props.greetingMessage)
</script>

方式2(Vue3.3+可用)

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
  <span>greetingMessage:{{ greetingMessage }}</span>
</template>

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import { defineProps } from 'vue'

defineOptions({
  name: 'App'
})

const props = defineProps(['foo','greetingMessage'])

console.log("props:",props)
console.log("props.foo:",props.foo)
console.log("props.greetingMessage:",props.greetingMessage)
</script>

内容的提问来源于stack exchange,提问作者Amrmsmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:10:18