Skip to content

记一次前端团队基本命名规范

仅仅仅仅仅仅是一份简单的代码规范参考 ~

团队现状

  • 代码风格各异
  • 可读性和可维护性下降
  • 增加团队协作和项目维护的难度
  • 需要制定统一的代码规范

使用背景

  1. 该规范主要使用新项目中;
  2. 现有项目应遵守原有项目规范(绝对前提)!!!尽可能使用该规范;
  3. 基于以上【第一点】【第二点】前提下,MR 流程会强制使用该规范 ;

命名基础

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;(除 Javascript 变量命名)

Q:为什么要选用全小写加中划线?

A:在命名风格里,是多样的,有大驼峰命名(TodoList),小驼峰命名(todoList),中划线命名(todo-list),下划线命名(todo_list)等等等等。 **使用全小写加中划线是因为这个风格是比较统一的,可以同时存在多个地方使用,如项目命名,目录命名,文件命名。**而其他风格是没有很好的统一标准的,比如 vue 组件命名,官方推荐就存在两种命名(大驼峰,中划线)...

A:公司内部某项目名使用 “ - ” 被误解析为 减号(-)(字符 “-” 解析失败

A:参考了 github 项目命名,存在多种命名,使用中划线命名算比较常见的(暂时没有数据支持)

项目命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;

如:my-project-name ,webapp-asclepius

文件夹(目录)命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;
  3. 有复数结构时,要采用复数命名法。如:images/components/utils/;
  • 常见目录
    文件夹名含义
    src源代码
    images图片资源
    test测试
    common公共资源
    public, static静态资源
    components组件
    pages, views页面模块

文件命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;

如:todo-list

组件命名(vue)

  1. 采用全小写字母组成
  2. 名称过长时,使用中划线(-)拼接

如:todo-list

通用组件命名

  1. 统一使用 base 开头;

如 base-button, base-table, base-form

Vue2 官方风格指南

由于新项目推荐使用 Vue3 ,所以不需要特别纠结 Vue2 风格指南,只是作为一部分参考使用,如有冲突,一切以本文档为准

CSS 命名

参考 CSS 命名规范:BEM 规范,OOCSS 规范。

Class 命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;

Id 命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;

对于具体命名方式,暂时没有比较好的总结,所以先强制约束以上两点命名规则,不允许出现驼峰命名!!!!!

常见 Class / Id 命名

ClassName含义
about关于
account账户
arrow箭头图标
article文章
aside边栏
audio音频
avatar头像
bg,background背景
bar
blog博客
brand品牌,商标
banner广告条 (顶部广告条)
crumb,breadcrumb面包屑
btn,button按钮
caption标题,说明
category分类
chart图表
clearfix清除浮动
close关闭
col,column
comment评论
community社区
container容器
content内容
copyright版权
current当前态,选中态
default默认
description描述
detail细节
disabled不可用
drop下拉
dorpmenu下拉菜单
download下载
entry文章,博文
error错误
even偶数,常用于多行列表或表格中
fail失败(提示)
faq常见问题
special-subject专题
stow收起
field用于表单的输入区域
figure
filter筛选
first第一个
foot,footer页脚
forum论坛
friendlink友情连接
gallery画廊
guide指南
group
head,header页头
help帮助
hide隐藏
hightlight高亮
home主页
homepage首页
hot热门,热点
icon图标
info,information信息
joinus加入我们
keyword关键词
last最后一个
layout布局
left , right ,center居左,居中,居右
list列表
link链接
login登录
loginbar登录条
logout退出
logo标志
main主体
menu菜单
meta元语言
module模块
more更多
msg,message消息
nav,navigation主导航
news新闻
nextpage下一页
nub小块
odd奇数
leave离开
output输出
pagination分页器
partner合作伙伴
pop,popup弹窗
preview预览
previous上一页
primary主要
product产品
progress进度条
promotion促销
publisher生产商
recommend推荐
reg,register注册
save保存
screenshot截图
scroll滚动
search搜索
searchinput搜索输入框
secondary次要
section区块
selected已选
service服务
share分享
show显示
sidebar边栏,侧栏
siteinfo网站信息
siteinfo-legal法律声明
siteinfo-credits信誉
sitemap网站地图
slide幻灯片,图片切换
sort排序
status状态
sub次级的,子级的
subpage二级页面,子页面
submenu子菜单
submit提交
subnav二级导航
subscribe订阅
subtitle副标题
success成功(提示)
summary摘要
tab标签页
tag标签
table表格
txt,text文本
thumbnail缩略图
time时间
tip提示
title标题
tool, toolbar工具条
video视频
vote投票
wrap,wrapper容器,包,一般用于最外层

Sass 命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;

路由路径命名

  1. 采用全小写字母组成;
  2. 名称过长时,使用中划线(-)拼接;

如:user-management (尽可能要与对应页面组件命名保持一致)

JavaScript 命名

参考 JavaScript 编写规范:ESLint,JSLint

常量

使用大写字母、数字组成,下划线拼接,如:CONSULT_TYPE

javascript
const API_KEY = "your_api_key";
const USER_ROLES = ["admin", "user"];

变量


普通变量

字母、数字组成,驼峰拼接,例:idCard

数据变量
javascript
// 对象数组 列表数据最好后面加个 List 或者 Data
const companyList = ref([]);
const checkedList = ref([]);
const selectedList = ref([]);
const addressList = ref([]);
const userList = [];
const tableData = [];
const arr = [];

// 非对象数组在字母后面加 s
const ids = [];
const selectedIds = [];
const activeKeys = [];
const nums = [3, 5, 6];
布尔值变量

使用前缀 is、has 或 should:例如,isActive、hasPermission 或 shouldUpdate

其他注意事项
  • 变量名不应过短,要能准确完整地描述该变量所表述的事物

    不好的变量名好的变量名
    inpinput, priceInput
    day1, day2, param1today, tomorrow
    iduserId, orderId
    objorderData, houseInfos
    tIdremoveMsgTimerId
    handlersubmitHandler, searchHandler
  • 变量名不要使用计算机术语,如:texareaData,应该取和业务相关的名字,如:leaveMsg

  • 变量名的对仗要明确,如:up/down、begin/end、opened/closed、visible/invisible、scource/target

  • 不要使用中文拼音,要使用正确的英文单词,如:shijianchuo 应改成 timestamp

  • 需要临时变量时,建议结合实际给变量命名,少用 temp 和 obj

  • 布尔变量不要使用否定的名词,如 notOk、notReady,因为否定的词取反比较反思维,如 if (!notOk)

函数


构造函数

大驼峰命名,如:Vue()

大驼峰命名,如:User、Product

javascript
class UserAccount {}
class ShoppingCart {}
普通函数

小驼峰命名,动词 + 名词方式组合,例:getList() 一般都使用动词 + 名词 根据实际情况修改

常见函数命名

动词含义用法示例
get获取某个值getList
set设置某个值setData
switch/toggle切换某个值switchTab/toggleTab
check判断是否可执行某个动作(权限)函数返回一个布尔值。true:可执行;false:不可执行
has判断是否含有某个值函数返回一个布尔值。true:含有此值;false:不含有此值
is判断是否为某个值函数返回一个布尔值。true:为某个值;false:不为某个值
load加载某些数据无返回值或者返回是否加载完成的结果
change改变数据changeData
javascript
编辑 onEdit     handleEdit     edit
新增 onAdd      handleAdd      add
删除 onDelete   handleDelete   delete
  批量删除 onMulDelete   handleMulDelete  mulDelete
重命名 onRename   handleRename
搜索 search
获取表格列表 getTableData  // 一般一般一般业务页面只有一个查询表格
返回 onBack    handleback   back
提交 onSubmit   hanldeSubmit   sumbit
确认 onConfirm    onOk   confirm    ok
取消 onCancel    cancel
关闭 onClose    close
保存 onSave    save