Vue 开发规范目录及说明 · 2020-09-26

本文档为前端vue 开发规范

·规范目的

·命名规范

·结构化规范

·注释规范

·编码规范

·CSS 规范

规范目的

为提高团队协作效率

便于后台人员添加功能及前端后期优化维护

输出高质量的文档

命名规范

为了让大家书写可维护的代码,而不是一次性的代码

让团队当中其他人看你的代码能一目了然

甚至一段时间时候后你再看你某个时候写的代码也能看

普通变量命名规范

·命名方法:驼峰命名法

·命名规范:

1.命名必须是跟需求的内容相关的词,比如说我想申明一个变量,用来表示我的学校,那么我们可以这样定义const mySchool = "我的学校";

2.命名是复数的时候需要加s,比如说我想申明一个数组,表示很多人的名字,那么我们可以这样定义const names = new Array();

常量

·命名方法: 全部大写

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

组件命名规范

官方文档推荐及使用遵循规则:

PascalCase (单词首字母大写命名)是最通用的声明约定

kebab-case (短横线分隔命名) 是最通用的使用约定

·组件名应该始终是多个单词的,根组件App 除外

·有意义的名词、简短、具有可读性

·命名遵循PascalCase 约定

·公用组件以Abcd (公司名缩写简称) 开头,如(AbcdDatePicker,AbcdTable)

·页面内部组件以组件模块名简写为开头,Item 为结尾,如(StaffBenchToChargeItem,StaffBenchAppNotArrItem)

·使用遵循kebab-case 约定

·在页面中使用组件需要前后闭合,并以短线分隔,如(,)

·导入及注册组件时,遵循PascalCase 约定

·同时还需要注意:必须符合自定义元素规范: 切勿使用保留字。

method 方法命名命名规范

·驼峰式命名,统一使用动词或者动词+名词形式

·请求数据方法,以data 结尾


·init、refresh 单词除外

·尽量使用常用单词开头(set、get、go、can、has、is)

附:函数方法常用的动词:

get 获取/set 设置,

add 增加/remove 删除

create 创建/destory 移除

start 启动/stop 停止

open 打开/close 关闭,

read 读取/write 写入

load 载入/save 保存,

create 创建/destroy 销毁

begin 开始/end 结束,

backup 备份/restore 恢复

import 导入/export 导出,

split 分割/merge 合并

inject 注入/extract 提取,

attach 附着/detach 脱离

bind 绑定/separate 分离,

view 查看/browse 浏览

edit 编辑/modify 修改,

select 选取/mark 标记

copy 复制/paste 粘贴,

undo 撤销/redo 重做

insert 插入/delete 移除,

add 加入/append 添加

clean 清理/clear 清除,

index 索引/sort 排序

find 查找/search 搜索,

increase 增加/decrease 减少

play 播放/pause 暂停,

launch 启动/run 运行

compile 编译/execute 执行,

debug 调试/trace 跟踪

observe 观察/listen 监听,

build 构建/publish 发布

input 输入/output 输出,

encode 编码/decode 解码

encrypt 加密/decrypt 解密,

compress 压缩/decompress 解压缩

pack 打包/unpack 解包,

parse 解析/emit 生成

connect 连接/disconnect 断开,

send 发送/receive 接收

download 下载/upload 上传,

refresh 刷新/synchronize 同步

update 更新/revert 复原,

lock 锁定/unlock 解锁

check out 签出/check in 签入,

submit 提交/commit 交付

push 推/pull 拉,

expand 展开/collapse 折叠

begin 起始/end 结束,

start 开始/finish 完成

enter 进入/exit 退出,

abort 放弃/quit 离开

obsolete 废弃/depreciate 废旧,

collect 收集/aggregate 聚集

views 下的文件命名

·只有一个文件的情况下不会出现文件夹,而是直接放在views 目录下面,如 index.vue

·尽量是名词,且使用驼峰命名法

·开头的单词就是所属模块名字(workbenchIndex、workbenchList、workbenchEdit)

·名字至少两个单词(good: workbenchIndex)(bad:workbench)

props 命名

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

例外情况

1.作用域不大临时变量可以简写,比如:str,num,bol,obj,fun,arr。

2.循环变量可以简写,比如:i,j,k 等。

结构化规范

目录文件夹及子文件规范

·以下统一管理处均对应相应模块

·以下全局文件文件均以index.js 导出,并在 main.js 中导入

·以下临时文件,在使用后,接口已经有了,发版后清除

Vue 文件基本结构


多个特性的元素规范

多个特性的元素应该分多行撰写,每个特性一行。(增强更易读)

元素特性的顺序

原生属性放前面,指令放后面

如下所示:

组件选项顺序

如下所示:

注释规范

代码注释在一个项目的后期维护中显的尤为重要,所以我们要为每一个被复用的组件编写组件使用说明,为组件中每一个方法编写方法说明

务必添加注释列表

1.公共组件使用说明

2.各组件中重要函数或者类说明

3.复杂的业务逻辑处理说明

4.特殊情况的代码处理说明,对于代码中特殊用途的变量、存在临界值、函数中使用的 hack、使用了某种算法或思路等需要进行注释描述

5.多重if 判断语句

6.注释块必须以/**(至少两个星号)开头**/

7.单行注释使用//

单行注释

注释单独一行,不要在代码后的同一行内加注释。例如:

 

多行注释

编码规范

优秀的项目源码,即使是多人开发,看代码也如出一人之手。统一的编码规范,可使代码更易于阅读,易于理解,易于维护。尽量按照ESLint 格式要求编写代码

源码风格

使用ES6 风格编码

1.定义变量使用let ,定义常量使用 const

2.静态字符串一律使用单引号或反引号,动态字符串使用反引号

1.解构赋值

·数组成员对变量赋值时,优先使用解构赋值


·函数的参数如果是对象的成员,优先使用解构赋值


1.拷贝数组

使用扩展运算符(...)拷贝数组。

1.箭头函数

需要使用函数表达式的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了this

1.模块

如果模块只有一个输出值,就使用export default,如果模块有多个输出值,就不使用 export default,export default 与普通的 export 不要同时使用


·如果模块默认输出一个函数,函数名的首字母应该小写。


·如果模块默认输出一个对象,对象名的首字母应该大写。


指令规范

1.指令有缩写一律采用缩写形式


1.v-for 循环必须加上 key 属性,在整个 for 循环中 key 需要唯一


1.避免v-if 和 v-for 同时用在一个元素上(性能问题)

以下为两种解决方案:

·将数据替换为一个计算属性,让其返回过滤后的列表


·将v-if 移动至容器元素上 (比如 ul, ol)


Props 规范

Props 定义应该尽量详细


其他

1.避免this.$parent

2.调试信息console.log() debugger 使用完及时删除

3.除了三目运算,if,else 等禁止简写


CSS 规范

通用规范

1.统一使用"-"连字符

2.省略值为0 时的单位


1.如果CSS 可以做到,就不要使用 JS

2.建议并适当缩写值,提高可读性,特殊情况除外

“建议并适当”是因为缩写总是会包含一系列的值,而有时候我们并不希望设置某一值,反而造成了麻烦,那么这时候你可以不缩写,而是分开写。

当然,在一切可以缩写的情况下,请务必缩写,它最大的好处就是节省了字节,便于维护,并使阅读更加一目了然。


1.声明应该按照下表的顺序

左到右,从上到下




1.元素选择器应该避免在scoped 中出现

2.官方文档说明:在scoped 样式中,类选择器比元素选择器更好,因为大量使用元素选择器是很慢的。

分类的命名方法

使用单个字母加上"-"为前缀

布局(grid)(.g-);

模块(module)(.m-);

元件(unit)(.u-);

功能(function)(.f-);

皮肤(skin)(.s-);

状态(.z-)。

统一语义理解和命名

布局(.g-)


模块(.m-)、元件(.u-)



功能(.f-)


皮肤(.s-)


状态(.z-)


sass 规范

当使用Sass 的嵌套功能的时候,重要的是有一个明确的嵌套顺序,以下内容是一个 SCSS 块应具有的顺序。

1.当前选择器的样式属性

2.父级选择器的伪类选择器(:first-letter, :hover, :active etc)

3.伪类元素(:before and :after)

4.父级选择器的声明样式(.selected, .active, .enlarged etc.)

5.用Sass 的上下文媒体查询

6.选择器作为最后的部分

 

特殊规范

·对用页面级组件样式,应该是有作用域的

·对于公用组件或者全局组件库,我们应该更倾向于选用基于class 的 BEM 策略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345