前言

本命名风格指南推荐了一种统一的命名规范来编写 Vue.js 代码。这使得代码具有如下的特性:

  • 统一团队的命名规范,其它开发者或是团队成员更容易上手阅读和理解。

  • IDEs 更容易理解代码,从而提供高亮、格式化等辅助功能。

  • 本指南只是个人总结归纳的,仅作为一种参考。

命名分类

现在常用的vue命名规范无外乎四种:

  • camelCase(驼峰式 )
  • kebab-case(短横线连接式)
  • PascalCase(帕斯卡命名式)
  • Snake(下划线连接式)

文件夹命名

如果你展开 node_modules 中的项目依赖,你会发现,几乎所有的项目文件夹命名都是 kebab-case 命名的,使用kebab-case命名的文件夹比camelCase命名的文件夹看起来更清晰。

属于components文件夹下的子文件夹,也统一使用 kebab-case 的风格。

组件命名

1、自定义组件名必须是多个单词组合的,并且是完整的单词而不是单词的缩写。

// 错误
components/
|- sd-settings.vue
|- u-prof-opts.vue // 正确
components/
|- student-dashboard-settings.vue
|- user-profile-options.vue

2、单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)。

推荐)这里全部使用kebab-case格式,主要是后面很多会使用到kebab-case格式,方便记忆。

单词大写开头对于代码编辑器的自动补全最为友好,因为这使得我们在 JS(X) 和模板中引用组件的方式尽可能的一致。然而,混用文件命名方式有的时候会导致大小写不敏感的文件系统的问题,这也是横线连接命名同样完全可取的原因。

3、应用特定样式和约定的基础组件 (也就是展示类的、无逻辑的或无状态的组件) 应该全部以一个特定的前缀开头,比如 BaseAppV。而且一般放在全局注册,因为会被频繁使用。

// 错误
components/
|- MyButton.vue
|- VueTable.vue
|- Icon.vue // 正确
components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue

4、组件名中的单词顺序

组件名应该以高级别的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾

// 错误
components/
|- ClearSearchButton.vue
|- RunSearchButton.vue
|- SearchInput.vue // 正确
components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputQuery.vue

5、在JS中的组件名大小写

也就是在注册组件的时候,全部使用 PascalCase 格式。

import MyComponent from './my-component.vue'

export default {
name: 'MyComponent',
components:{MyComponent}
}

6、html模板中的组件命名

对于绝大多数项目来说,在单文件组件和字符串模板中组件名应该总是 PascalCase 的——但是在 DOM 模板中总是 kebab-case 的。

也就是说,如果在模板中写的是单标签,使用PascalCase格式,双标签则使用kebab-case格式。

推荐)不管是单标签还是双标签,全部使用 kebab-case 格式,主要是为了方便。

<!--全部使用kebab-case格式-->
<my-component />
<my-component></my-component>

7、prop名称的大小写

在子组件html中传入prop的为kebab-case格式,子组件接收方采用 camelCase 格式。

// 错误
<welcome-message greetingText="hi"/> props: {
'greeting-text': String
} // 正确
<welcome-message greeting-text="hi"/> props: {
greetingText: String
}

8、组件事件命名

统一使用 kebab-case 格式,并且以动词结尾。

// 正确
this.$emit('dom-resize');
this.$emit('api-load');

命名总结

1、采用kebab-case命名的:

  • 文件夹

  • 单文件组件

  • 组件在html模板中使用(<my-component></my-component>

  • 在模板中prop传入属性到子组件(<my-componnet set-text="hello"/>

  • 所有事件名(this.$emit('api-reload')

2、采用PascalCase命名:

  • 公共基础组件(MfcSelect

  • js中components注册组件时(import MyComponent from './my-component.vue'

  • 组件的name属性(name: 'MyComponent'

3、采用camelCase 命名:

  • 子组件接收prop属性
props: {
setText: String
}

Q&A

Q:为什么有些命名看起来既可以PascalCase又可以kebab-case的,都选择了kebab-case

A:因为如果有很多同时使用kebab-case的话,比较方便记忆,仅此而已。

参考链接

风格指南(官方)

Vue.js 组件编码规范(中文)

Vue.js命名风格指南的更多相关文章

  1. 大神的JS代码风格指南

    js代码风格指南:1.缩进使用空格,不要用制表符2.必须用分号3.暂时不用ES6(modules)例如export和import命令4.不鼓励(不禁止)水平对齐5.少用var 都应该使用const或者 ...

  2. Vue精简版风格指南

    前面的话 Vue官网的风格指南按照优先级(依次为必要.强烈推荐.推荐.谨慎使用)分类,且代码间隔较大,不易查询.本文按照类型分类,并对部分示例或解释进行缩减,是Vue风格指南的精简版 组件名称 [组件 ...

  3. Google HTML/CSS/JS代码风格指南

    JS版本参见:http://www.zhangxinxu.com/wordpress/2012/07/google-html-css-javascript-style-guides/ HTML/CSS ...

  4. Vue的理解:Vue.js新手入门指南----转

    最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在 ...

  5. Vue.js新手入门指南

    最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在 ...

  6. JS代码风格指南

    一.基本格式 缩进 建议每级4个空格,可以给编辑器设置tab = 4个空格,自动转换 分号 不要省略分号,防止ASI(自动插入分号)错误 行宽 每行代码不超过80个字符,过长应该用操作符手动断行 断行 ...

  7. vue.js有什么用,是用来做什么的(整理)

    vue.js有什么用,是用来做什么的(整理) 一.总结 一句话总结:用数据绑定的思想,vue可以简单写单个页面,也可以写一个大的前端系统,也可以做手机app的界面. 1.Vue.js是什么? 渐进式框 ...

  8. Vue风格指南总结及对应ESLint规则配置

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10906951.html,多谢,=.=~ 必要的:规避错误: 强烈推荐:改善可读性和开发体验: 推 ...

  9. 《Vue.js 2.x实践指南》 已出版

    <Vue.js 2.x实践指南>其实在一年前就已经完稿了,只是由于疫情的缘故耽搁了很久才下厂印刷.阅读本书需要具备HTML.CSS和JS基础,本书针对的用户群体主要是:想要快速学习vue技 ...

随机推荐

  1. 谷歌Chrome浏览器无法安装插件的解决方法(本文干货!)

    这个问题困扰了我很久,作为小白学习可能会用到谷歌插件,奈何谷歌也太变态,国内的环境无法正常登录谷歌账户.无法访问应用商店,而Chrome主版本号大于66的只能从Chrome应用商店下载并安装插件,各种 ...

  2. 如何利用缓存机制实现JAVA类反射性能提升30倍

    一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> ...

  3. liunx查看日志 | 最实用命令和方法

    1.业务系统访问量不是很大的时候,使用这个,有bug的地方操作下,直接看最后操作的日志 tail  -fn100  catalina.log   查询日志尾部最后100行的日志,并且随文件;   2. ...

  4. access,trunk,hybrid端口分析

    1.access 接收:当数据没有tag时打上pvidtag进入,若有则看是否与pvid相等,相等则接收,不想等则丢弃. 转发:看tag是否等于pvid,若等则去tag发送,否则不处理. 2.trun ...

  5. springMVC-MyBatis-Mysql 环境下, 返回时间格式不是指定格式

    在数据库中的时间是: 比如: 2018-04-06:12;23:34. 但是mybatis查询出来以后是下面的格式. {"updatedTime":{"date" ...

  6. lqb 基础练习 特殊的数字

    基础练习 特殊的数字 时间限制:1.0s   内存限制:512.0MB     问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3.编程求所有 ...

  7. 领扣(LeetCode)独特的电子邮箱地址 个人题解

    每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电 ...

  8. Springboot 系列(十六)你真的了解 Swagger 文档吗?

    前言 目前来说,在 Java 领域使用 Springboot 构建微服务是比较流行的,在构建微服务时,我们大多数会选择暴漏一个 REST API 以供调用.又或者公司采用前后端分离的开发模式,让前端和 ...

  9. DNS name

    DNS name 指的反向解析的域名.

  10. vue 解决跨域

    先上报错 以表尊重 在vue中 找到 config文件夹中的 index.js文件  配置更改如下 proxyTable: { '/api': { target: 'http://47.240.11. ...