根据个人阅读官网中的风格指南,整理在实际开发中常用的命名规范,希望可以帮助大家。

1、项目文件命名

代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用,杜绝完全不规范的缩写。

1.1 项目名

全小写_隔开 my_project_name

1.2 目录名

全小写,参照项目命名规则,有复数结构时,要采用复数命名法。例:docs、assets、components、directives、mixins、utils、views

my_project_name/
|- docs           // 项目的细化文档目录(可选)
|- node_modules   // 下载的依赖包
|- public         // 静态页面目录|- index.html // 项目入口
|- src            // 源码目录|- api        // http 请求目录|- assets     // 静态资源目录,这里的资源会被wabpack构建|- icon   // icon 存放目录|- img    // 图片存放目录|- js     // 公共 js 文件目录|- scss   // 公共样式 scss 存放目录|- frame.scss   // 入口文件|- global.scss  // 公共样式|- reset.scss   // 重置样式|- components     // 组件|- plugins        // 插件|- router         // 路由     |- index.js   // 详细的路由拆分目录(可选)|- store          // 全局状态管理|- utils          // 工具存放目录|- request.js // 公共请求工具|- views          // 页面存放目录|- App.vue        // 根组件|- main.js        // 入口文件|- tests          // 测试用例|- .browserslistrc// 浏览器兼容配置文件|- .editorconfig  // 编辑器配置文件|- .eslintignore  // eslint 忽略规则|- .eslintrc.js   // eslint 规则|- .gitignore     // git 忽略规则|- babel.config.js // babel 规则|- Dockerfile // Docker 部署文件|- jest.config.js|- package-lock.json|- package.json // 依赖|- README.md // 项目 README|- vue.config.js // webpack 配置

1.3 图像文件名

全部采用小写方式, 优先选择单个单词命名,多个单词命名以下划线分隔。例如:banner_sina.gif

1.4 HTML 文件名

全部采用小写方式, 优先选择单个单词命名,多个单词命名以下划线分隔或者驼峰命名。

1.5 CSS 文件名

全部采用小写方式, 优先选择单个单词命名,多个单词命名以短横线分隔或者驼峰命名。

1.6 JavaScript 文件名

全部采用小写方式, 优先选择单个单词命名,多个单词命名以短横线分隔或者驼峰命名。

2、 Vue 组件命名

vue 方法放置顺序

(1)components

(2)props

(3)data

(4)created

(5)mounted

(6)activited

(7)update

(8)beforeRouteUpdate

(9)metods

(10)filter

(11)computed

(12)watch

method 自定义方法命名

(1)动宾短语(good:jumpPage、openCarInfoDialog)(bad:go、nextPage、show、open、login)

(2)ajax 方法以 get、post 开头,以 data 结尾(good:getListData、postFormData)(bad:takeData、confirmData、getList、postForm)

(3)事件方法以 on 开头(onTypeChange、onUsernameInput)

(4)init、refresh 单词除外

(5)尽量使用常用单词开头(set、get、open、close、jump)

(6)驼峰命名(good: getListData)(bad: get_list_data、getlistData)

自定义事件
自定义事件应始终使用 kebab-case 的事件名。

不同于组件和 prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。

this.$emit('my-event')
<MyComponent @my-event="handleDoSomething" />

事件方法
命名方法:camelCase
命名规范:handle + 名称(可选)+ 动词

2.1 单文件组件名

文件扩展名为.vue的single-file components(单文件组件)。单文件组件名应该始终是单词大写开头 (PascalCase)。

components/
|- MyComponent.vue

2.2 单例组件名

只拥有单个活跃实例的组件应该以 The 前缀命名,以示其唯一性。

这不意味着组件只可用于一个单页面,而是_每个页面_只使用一次。这些组件永远不接受任何 prop,因为它们是为你的应用定制的。如果你发现有必要添加 prop,那就表明这实际上是一个可复用的组件,_只是目前_在每个页面里只使用一次。

比如,头部和侧边栏组件几乎在每个页面都会使用,不接受 prop,该组件是专门为该应用所定制的。

components/
|- TheHeading.vue
|- TheSidebar.vue

2.3 基础组件名

基础组件:不包含业务,独立、具体功能的基础组件,比如日期选择器、模态框等。这类组件作为项目的基础控件,会被大量使用,因此组件的 API 进行过高强度的抽象,可以通过不同配置实现不同的功能。

应用特定样式和约定的基础组件(也就是展示类的、无逻辑的或无状态、不掺杂业务逻辑的组件) 应该全部以一个特定的前缀开头 —— Base。

基础组件在一个页面内可使用多次,在不同页面内也可复用,是高可复用组件。

components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue

2.4 业务组件

业务组件:它不像基础组件只包含某个功能,而是在业务中被多个页面复用的(具有可复用性),它与基础组件的区别是,业务组件只在当前项目中会用到,不具有通用性,而且会包含一些业务,比如数据请求;而基础组件不含业务,在任何项目中都可以使用,功能单一,比如一个具有数据校验功能的输入框。

掺杂了复杂业务的组件(拥有自身 data、prop 的相关处理)即业务组件应该以 Custom 前缀命名。

业务组件在一个页面内比如:某个页面内有一个卡片列表,而样式和逻辑跟业务紧密相关的卡片就是业务组件。

components/
|- CustomCard.vue

2.5 紧密耦合的组件名

和父组件紧密耦合的子组件应该以父组件名作为前缀命名。
因为编辑器通常会按字母顺序组织文件,所以这样做可以把相关联的文件排在一起。

components/
|- TodoList.vue
|- TodoListItem.vue
|- TodoListItemButton.vue

2.6 组件名中单词顺序

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

因为编辑器通常会按字母顺序组织文件,所以现在组件之间的重要关系一目了然。如下组件主要是用于搜索和设置功能。

components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputQuery.vue
|- SearchInputExcludeGlob.vue
|- SettingsCheckboxTerms.vue
|- SettingsCheckboxLaunchOnStartup.vue

2.7 完整单词的组件名

组件名应该倾向于完整得单词而不是缩写。

编辑器中的自动补全已经让书写长命名的代价非常之低了,而其带来的明确性却是非常宝贵的。不常用的缩写尤其应该避免。

3 代码参数命名

3.1data props 方法注意点

在声明 prop 的时候,其命名应该始终使用 camelCase,而在模板和 JSX 中应该始终使用 kebab-case。

(1)使用 data 里的变量时请先在 data 里面初始化

(2)props 指定类型,也就是 type

(3)props 改变父组件数据 基础类型用 $emit ,复杂类型直接改

(4)ajax 请求数据用上 isLoading、isError 变量

(5)不命名多余数据,现在是详情页、你的数据是 ajax 请求的,那就直接声明一个对象叫 d,而不是每个字段都声明

(6)表单数据请包裹一层 form

生命周期方法注意点

(1)不在 mounted、created 之类的方法写逻辑,取 ajax 数据,

(2)在 created 里面监听 Bus 事件

3.2 router

Vue Router Path 命名采用 kebab-case 格式。 用 Snake(如:/user_info)或 camelCase(如:/userInfo)的单词会被当成一个单词,搜索引擎无法区分语义。

// bad
{path: '/user_info', // user_info 当成一个单词name: 'UserInfo',component: UserInfo,meta: {title: ' - 用户',desc: ''}
},// good
{path: '/user-info', // 能解析成 user infoname: 'UserInfo',component: UserInfo,meta: {title: ' - 用户',desc: ''}
},

3.2 变量、常量、方法

变量

  • 命名方法:camelCase 命名规范:
  • 类型 + 对象描述或属性的方式
// bad
var getTitle = "LoginTable"// good
let tableTitle = "LoginTable"
let mySchool = "我的学校"

常量

命名方法:全部大写下划线分割
命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词

const MAX_COUNT = 10
const URL = 'http://test.host.com'

方法

  • 命名方法:camelCase
  • 命名规范:统一使用动词或者动词 + 名词形式
// 1、普通情况下,使用动词 + 名词形式
// bad
go、nextPage、show、open、login// good
jumpPage、openCarInfoDialog// 2、请求数据方法,以 data 结尾
// bad
takeData、confirmData、getList、postForm// good
getListData、postFormData// 3、单个动词的情况
init、refresh

暂时总结到这里,如果需要更详细还请需要看vue官方文档 风格指南

前端同学开发中应该知道的命名规范相关推荐

  1. 马小看前端( 在开发中遇到问题如何解决 )

    马小看前端( 在开发中遇到问题如何解决 ) 今天我们来说说,在开发中遇到问题该如何去找到并且去解决他,相信很多人在开发中不少遇到过bug这个东西,有的对于bug已经无可奈何,搞人心态哦,不过bug是一 ...

  2. 前端项目开发中碰到的坑、移动端兼容性问题

    前端开发中碰到的坑.移动端兼容性问题 1.ios兼容input光标高度 问题:input输入光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样. **出现问 ...

  3. BizTalk开发系列(十九) BizTalk命名规范

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 目前BizTalk项目的开发人员比较少,但是在开发过程中还是需要命名规范的约束.根 ...

  4. Domino Web开发规则之一:Notes命名规范

    所有的设计元素的命名都分成两部分,名称和别名,规定名称用中文命名,别名用英文,别名尽量使用简写,以WEB开发时不会产生较长的URL为前提,提高HTTP Request的响应速度.中文名称前面加上字母A ...

  5. 前端JavaScript开发中需要注意的代码问题

    在我们进行前端开发的过程中,需要遵循一定的代码编写规则,这样才能够让我们写出更合理的.易于阅读和维护的代码,那么你知道在JavaScript中有哪些需要注意的地方吗? 一.块级作用域let 取代 va ...

  6. div 不受父级标签影响_前端H5开发中常用的标签

    本文主要内容 排版标签: <h1> <p> <hr /> <br /> <div> <span> <center> ...

  7. 前端模块化开发中webpack、npm、node、nodejs之间的关系[小白总结]

    https://blog.csdn.net/AngelLover2017/article/details/84801673

  8. 前端实际开发中常见坑(vue项目中各种运行编译报错)

    1.当拉取一个项目下来,npm install报错. 可能原因:npm install的路径不对,切记要检查好是在拉取的项目下安装依赖,而不是在自己新建的项目下(也就是真正仓库项目的上级)进行操作. ...

  9. 开发中git提交代码注释规范

    1.1 简述 git commit -m "本次提交注释信息规范" 1.2 注释分类 feat: 修改/增加新功能 fix: 修改bug的变更 docs: 文档相关变更 style ...

最新文章

  1. 无法启动python怎么办_解决python写的windows服务不能启动的问题
  2. 【强连通分量】Proving Equivalences
  3. nginx重新加载php,如何使用nginx启动、停止和重新加载
  4. 北斗导航 | 从北一到北二再到北三,你应该知道的北斗导航系统
  5. html 闪烁文本,HTML最简单的文字闪烁代码
  6. Dubbo服务暴露的流程
  7. 服务器显示转速负数,Moldflow使用常见问题及解决方案
  8. python改变数组元素排序
  9. Git学习系列(三)版本回退和管理文件的修改及删除操作
  10. 深度学习网络模型实战
  11. git pull使用【转】
  12. Linux的主动实行措施cron和crontab(1)
  13. 宋健人口模型 matlab,一阶常微分方程模型-人口模型与预测
  14. 论文阅读-Generative Image Inpainting with Contextual Attention
  15. 网课脚本教程 【基础】(2) 脚本制作规范
  16. 无线院2018下半年技术教练认证-专业能力测评初试
  17. android定时上传视频,【安卓按键精灵】定时执行指定任务
  18. python声音识别歌曲_听歌识曲--用python实现一个音乐检索器
  19. c#字符串转为json对象与json转对象
  20. vue2与vue3的区别

热门文章

  1. 大数据驱动的运营创新和探索 1
  2. 动态规划Ⅰ:斐波那契数列
  3. 前端学习常用文档地址(自用常更新)
  4. 【Eclipse插件开发】Java读写串口
  5. Ubuntu系统下文件带小锁如何解决
  6. js中eval方法的使用
  7. 电源完整性之Cadence Sigrity Power SI_AC阻抗仿真
  8. java 答题卡_试题六(共15分) 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某咖啡 - 赏学吧...
  9. TCP/IP 协议簇分哪几层?TCP、IP、XMPP、HTTP、分别属于哪一层?
  10. VS2017制作POV-LED取模软件 可对图片取模