news 2026/6/15 13:53:59

Vue 官方推荐:kebab-case(短横线命名法)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 官方推荐:kebab-case(短横线命名法)

kebab-case(短横线命名法)是一种使用连字符连接小写单词的命名方式,Vue官方推荐在模板中使用。


与camelCase(驼峰式)和snake_case(蛇形命名)不同,kebab-case在HTML中更具可读性和一致性。


Vue会自动转换模板中的kebab-case与JS中的camelCase/PascalCase,建议组件名、事件名和属性使用kebab-case,而方法和变量使用camelCase。


这种约定提高了代码可维护性,并与HTML原生属性风格保持一致。


kebab-case(短横线命名法)

kebab-case是一种命名约定,单词之间用连字符(短横线-)连接,所有字母通常为小写。

特点:

  • 单词之间使用连字符-分隔

  • 通常全部小写

  • 看起来像烤串(kebab)上的肉块


示例:

// kebab-case 示例 custom-event user-profile submit-form date-picker side-bar-menu

与其他命名约定的对比

1.camelCase(驼峰命名法)

// 小驼峰(首字母小写) customEvent userProfile submitForm // 大驼峰/帕斯卡命名法(首字母大写) CustomEvent UserProfile SubmitForm

2.snake_case(蛇形命名法)

custom_event user_profile submit_form DATE_PICKER // 通常用于常量

3.PascalCase(帕斯卡命名法)

CustomEvent UserProfile SubmitForm DatePicker

在 Vue 中的使用

Vue 官方推荐

<!-- Vue 推荐在模板中使用 kebab-case --> <template> <!-- 组件名使用 kebab-case --> <user-profile @custom-event="handleEvent" /> <!-- 事件名使用 kebab-case --> <button @click="submitForm">提交</button> <!-- 属性名使用 kebab-case --> <date-picker :start-date="startDate" /> </template> <script> // 但在 JavaScript 中使用 camelCase export default { methods: { handleCustomEvent() { // 方法名使用 camelCase }, submitForm() { // 方法名使用 camelCase } } } </script>

实际转换规则

Vue 会自动在 kebab-case 和 camelCase 之间进行转换:

<!-- 模板中使用 kebab-case --> <my-component :custom-prop="value" @custom-event="handler" /> <!-- 等价于 JavaScript 中的 --> myComponent.customProp = value myComponent.$on('customEvent', handler)

Vue 中的具体应用场景

1.组件名

vue

<!-- 注册组件 --> components: { 'user-profile': UserProfile // kebab-case } <!-- 使用 --> <user-profile /> <!-- ✅ 推荐 --> <UserProfile /> <!-- ⚠️ 在 Vue 模板中也能工作,但不推荐 -->

2.自定义事件

vue

<!-- 子组件触发 --> this.$emit('user-selected', userId) // kebab-case <!-- 父组件监听 --> <child-component @user-selected="handleSelection" /> <!-- ✅ 推荐 --> <child-component @userSelected="handleSelection" /> <!-- ⚠️ 也能工作 -->

3.Props 属性

vue

<!-- 父组件传递 --> <my-component :user-name="name" /> <!-- ✅ 推荐 --> <!-- 子组件接收 --> props: { userName: String // 自动映射 }

4.Vue Router 路由

javascript

// 路由定义 const routes = [ { path: '/user-profile', // URL 路径使用 kebab-case name: 'UserProfile', // 路由名使用 PascalCase component: UserProfile } ]

为什么 Vue 推荐 kebab-case?

  1. HTML 不区分大小写

    • HTML 属性和标签名不区分大小写

    • customEventcustomevent在 HTML 中是相同的

  2. 一致性

    <!-- 原生 HTML 属性使用短横线 --> <div>// kebab-case 更容易阅读长名称 'user-profile-management-system' // ✅ 清晰 'userProfileManagementSystem' // ⚠️ 长名称时较难阅读

实际示例对比

vue

<!-- 使用 kebab-case(推荐) --> <template> <user-profile-card :user-data="user" @profile-updated="updateProfile" class="main-content" /> </template> <!-- 混合使用(不推荐) --> <template> <UserProfileCard :userData="user" @profileUpdated="updateProfile" class="main-content" /> </template>

总结

  • kebab-case: 用于 HTML 模板、自定义事件名、DOM 属性

  • camelCase: 用于 JavaScript 代码、方法名、变量名

  • PascalCase: 用于组件定义、类名、构造函数


Vue 会自动处理这些命名约定之间的转换,但遵循官方推荐可以使代码更加一致和可维护。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 21:49:45

vLLM加持下的Qwen2.5-7B-Instruct:极致推理效率方案

vLLM加持下的Qwen2.5-7B-Instruct&#xff1a;极致推理效率方案 在大模型落地加速的今天&#xff0c;如何在有限算力条件下实现高吞吐、低延迟、长上下文支持的语言模型服务&#xff0c;已成为AI工程团队的核心挑战。尤其是在企业级应用中&#xff0c;面对并发请求、结构化输出…

作者头像 李华
网站建设 2026/6/15 12:26:36

ResNet18团队协作:5人共享GPU资源,实时查看彼此进度

ResNet18团队协作&#xff1a;5人共享GPU资源&#xff0c;实时查看彼此进度 引言 想象一下&#xff0c;你和4个小伙伴正在创业&#xff0c;大家都在用ResNet18开发不同的产品功能——有人做图像分类&#xff0c;有人搞目标检测&#xff0c;还有人研究迁移学习。这时候最头疼的…

作者头像 李华
网站建设 2026/6/15 13:35:14

实战Qwen2.5-7B-Instruct:结合vLLM加速模型推理

实战Qwen2.5-7B-Instruct&#xff1a;结合vLLM加速模型推理 一、引言&#xff1a;为何选择vLLM部署Qwen2.5-7B-Instruct&#xff1f; 在大语言模型&#xff08;LLM&#xff09;的落地实践中&#xff0c;推理效率与响应延迟是决定用户体验和系统吞吐量的关键因素。尽管Qwen2.5-7…

作者头像 李华
网站建设 2026/6/11 1:04:22

ResNet18物体识别3步上手:云端GPU免安装,新手友好

ResNet18物体识别3步上手&#xff1a;云端GPU免安装&#xff0c;新手友好 引言&#xff1a;不懂代码也能玩转AI物体识别 想象一下这样的场景&#xff1a;你正在整理公司产品库的海量图片&#xff0c;需要快速找出所有包含"水杯"的照片&#xff1b;或者你想自动统计…

作者头像 李华
网站建设 2026/6/15 10:42:20

AI万能分类器性能优化:降低延迟提升吞吐量的实战方法

AI万能分类器性能优化&#xff1a;降低延迟提升吞吐量的实战方法 1. 背景与挑战&#xff1a;零样本分类的高可用性需求 随着企业智能化升级加速&#xff0c;文本分类在工单系统、客服机器人、舆情监控等场景中扮演着核心角色。传统的有监督分类模型依赖大量标注数据和周期性训…

作者头像 李华
网站建设 2026/6/15 10:43:44

Node.js用fs.mkdirp创建多级目录

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Node.js多级目录创建&#xff1a;从基础操作到云原生场景的深度实践目录Node.js多级目录创建&#xff1a;从基础操作到云原生场景…

作者头像 李华