在 Vue Options API 中,组件名称通过 export default 对象的 name 选项定义,推荐 PascalCase 格式如 'UserProfileCard',用于 Vue DevTools 调试、keep-alive 缓存匹配、递归组件和动态组件等场景。
在 Vue Options API 中,直接在组件导出对象里写 name 选项就能定义组件名称,这是最简单也最标准的做法,对调试非常友好。
只需在 export default 对象中添加 name: 'MyComponent' 即可。名称推荐用 PascalCase(首字母大写的驼峰式),比如 'UserProfileCard' 或 'OrderList',不能以数字开头,也不能含空格或特殊符号。
name: 'SalesDashboard'、name: 'ProductFilter'
name: 'sales-dashboard'(kebab-case 在 Options API 中虽能运行但不推荐)、name: '1stComponent'(数字开头)、name: 'my component'(含空格)Vue DevTools 会优先读取这个 name 值来显示组件树中的节点名。没有它时,DevTools 可能只显示 <AnonymousComponent> 或文件路径,排查时很难快速定位。
console.log(this.$options.name) 可在控制台确认当前组件名是否生效它还影响几个关键功能,间接提升开发体验:
<keep-alive include="UserProfileCard"> 时,依赖的就是这个 name<UserProfileCard v-if="hasChildren" /> 能正常调用自己<component :is="currentTab"> 时,currentTab 可以是字符串形式的 namename 和文件名不是一回事,也不强制要求一致,但保持一致是良好实践。
UserProfile.vue,name 写成 'UserProfileCard' 完全可以,只要逻辑清晰components: { UserProfileCard } 中的键名和 name 无关,只和 import 的变量名有关app.component('UserProfileCard', UserProfile) 的第一个参数才是注册名,name 不参与注册