项目创建
- 统一使用公司脚手架创建
- C端用户使用spa模板,B端用户使用kms模板
命名规范
项目命名规范
- 名字统一使用单词或单词缩写命名,缩写名称需要在描述上写明全英文单词
- 多个单词之间使用英文连字符“-”连接
- 后端项目使用“-server”结尾,前端项目使用”-front“结尾
组件命名规范
- 所有页面都用单独的文件夹承载,内部独立的models进行管理
- model文件驼峰式,如addPrice.model.js
- router集中式管理,放在src根目录下的routes下,可以拆分不同模块的文件夹
- 统一输出标准的react component的文件以jsx后缀
- react组件名要带有业务属性,如PriceList、 PriceDetail等。禁止直接使用通用名,如:From、List等命名。
统一是用less,文件命名:style.model.less
文件目录规范
注释规范
【强制】TypeScript接口、JS函数、Util的注释必须使用 JSdoc 规范,使用 /* 内容 / 格式,写名功能、参数、return及TODO。可用VScode插件生成标准格式
- 【强制】API接口配置需要有详细的接口说明及Yapi文档地址。
- 【强制】所有组件、hook、models、等JS及JSX文件都必须添加创建者和创建日期。可用VScode插件生成标准格式
- 【强制】方法内部单行注释,在被注释语句上方另起一行,使用 // 注释。
- 【强制】所有的枚举类型字段必须要有注释,说明每个数据项的用途。
- 【推荐】与其用半吊子英文来注释,不如用中文注释说清楚。专有名词与关键字保持英文原文即可。
示例
1.文件头部注释
/*
* @Author: guojianli02@xxx.com
* @Date: 2022-04-02 14:54:38
* @LastEditors: guojianli02@xxx.com
* @LastEditTime: 2022-04-02 14:54:38
* @Description: 这是一个测试文件
*/
2.函数注释
/**
* @description: 测试函数
* @param {string} name 姓名
* @param {number} age 年龄
* @returns {string} 返回一段描述
*/
function test(name, age) {
const str = `my name is ${name}, I am ${age} years old`
return str
}
3.API类注释
/**
* @description xxx
* @param {string} contentId 直播contentId
* @param {string} params.uid 用户ID
* @see https://yapi.xxx.com/project/2327/interface/api/21616 接口文档地址
* @returns {Promise<UserLogoutData>}
*/
export const getEveluateStatus = ({ uid, contentId }) => {
return camelCaseResponse(
request.get(
`${configService.getNpsApiServiceBasePath()}/api/nps/course/comment/status`,
{ content_id: contentId, uid }
)
)
}
4.interface注释
export interface IMessageUpdate {
/**
* id
*/
id: number;
/**
* 角色
*/
role: string;
/**
* 时间
*/
time: number;
/**
* 聊天消息
*/
content: string;
}
5.函数内部单行注释
方法内部单行注释,在被注释语句上方另起一行,使用 // 注释。
/**
* @description: 测试函数
* @param {string} xxx
* @returns {string} 返回data
*/
function getData(xxx) {
// data的用途
const data = xxx;
return data;
}
注释插件
1.安装
2.设置settings
下面的规则可以自行设置
// 头部注释
"fileheader.customMade": {
"Author": "朽木白", // 创建文件的作者或者邮箱
"Date": "Do not edit", // 文件创建时间(不变)
"LastEditors": "xxx@xxx.com", // 文件最后编辑者
"LastEditTime": "Do not edit", // 文件最后编辑时间
// 插件会自动将光标移动到Description选项中 方便输入 Description字段可以在specialOptions更改
"Description": "" // 介绍文件的作用、文件的入参、出参。
},
// 函数注释
"fileheader.cursorMode": {
"description": "", // 函数注释生成之后,光标移动到这里
"param": "", // param 开启函数参数自动提取 需要将光标放在函数行或者函数上方的空白行
"returns": "", // 函数返回值
},
"fileheader.configObj": {
"autoAdd": false // 检测文件没有头部注释,自动添加文件头部注释
}
3.快捷键
- 文件头部注释快捷键:window:ctrl+win+i,mac:ctrl+cmd+i
- 函数注释快捷键:window:ctrl+win+t,mac:ctrl+cmd+t