H5 移动端、管理系统 开发规范文档

开发规范的目的是保证统一项目成员的编码风格,并使代码美观,易于项目维护。

1.命名规范

1.1 项目文件命名
  • 项目名:
    全部采用小写方式,优先选择单个单词命名, 以短横线分隔。例:my-project-name。
  • 目录名:
    参照项目命名规则,有复数结构时,要采用复数命名法。例:assets、components、utils、views等。
  • 图像文件名:
    全部采用小写方式,优先选择单个单词命名,短横线分隔。例pic-people.jpg。
  • HTML 文件名:
    全部采用小写方式,优先选择单个单词命名, 以短横线分隔。例:home-page.html。
  • CSS 文件:
    全部采用小写方式,优先选择单个单词命名, 以短横线分隔。例:home-page.css。
  • JavaScript 文件名:
    全部采用小写方式,优先选择单个单词命名, 以短横线分隔。例:home-page.js。
1.2 Vue 组件命名
  • 组件名:
    文件扩展名为 .vue。应该始终是单词大写开头。例:MyComponent.vue。
  • 紧密耦合的组件名:
和父组件紧密耦合的子组件应该以父组件名作为前缀命名。 因为编辑器通常会按字母顺序组织文件,所以这样做可以把相关联的文件排在一起。例:
|-TodoList.vue
|-TodoListItem.vue
|-TodoListItemButton.vue
  • 组件名中单词顺序:
    组件名应该以高级别的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾。 因为编辑器通常会按字母顺序组织文件,所以现在组件之间的重要关系一目了然。如组件主要是用于搜索和设置功能。例:SearchButtonClear.vue
1.3 代码参数命名
  • router
    Vue Router Path 命名采用 kebab-case 格式。 用camelCase(如:/userInfo)的单词会被当成一个单词,搜索引擎无法区分语义。
    component 采用懒加载写法引入。
 {
    path: '/my-router',
    name: 'MyRouter',
    component: () => import("@/views/home/index.vue"),
    meta: {
      title: '标题',
      desc: '描述'
    }
  }
  • 模板中组件
    对于绝大多数项目来说,在单文件组件和字符串模板中组件名应该总是 PascalCase 的,但是在 DOM 模板中总是 kebab-case 的。
    在单文件组件和字符串模板中:
<MyComponent/>

在所有地方:

<my-component></my-component>
  • 变量
命名方法:camelCase
命名规范:类型 + 对象描述或属性的方式
  • 常量
命名方法:全部大写下划线分割
命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词
  • 方法
  命名方法:camelCase
  命名规范:统一使用动词或者形容词 + 名词形式
  • 自定义事件
  命名方法:camelCase
  命名规范:统一使用动词或者形容词 + 名词形式
  • 事件方法
  命名方法:camelCase
  命名规范:handle + 名称(可选)+ 动词

2.代码规范

  • Vue
1. 代码结构
<template></template>
<script></script>
<style></style>
2. 为 v-for 设置键值
 在组件上必须用 key 搭配 v-for,以便维护内部组件及其子树的状态。
3. v-if 和 v-for 互斥
 永远不要把 v-if 和 v-for 同时用在同一个元素上。

3.注释规范

  • HTML 文件注释
1.单行注释

一般用于简单的描述,如某些状态描述、属性描述等。
注释内容前后各一个空格字符,注释位于要注释代码的上面,单独占一行。

<!-- Comment Text -->
<div>...</div>
2.模块注释

一般用于描述模块的名称以及模块开始与结束的位置。
注释内容前后各一个空格字符,模块与模块之间相隔一行。

<!-- S Comment Text A --> 
<div class="mod_a">
  ...
</div>
<!-- E Comment Text A -->
3.CSS 文件注释

3.1 单行注释:
注释内容第一个字符和最后一个字符都是一个空格字符,单独占一行,行与行之间相隔一行。

/* Comment Text */ 
.jdc {} 

3.2 模块注释:
注释内容第一个字符和最后一个字符都是一个空格字符,/ 与 模块信息描述占一行,多个横线分隔符 - 与 / 占一行,行与行之间相隔两行。
推荐:

/* Module A  
---------------------------------------------------------------- */
.mod_a {}


/* Module B 
---------------------------------------------------------------- */
.mod_b {}
  • JavaScript 文件注释:
1.单行注释

单行注释使用 //,注释应单独一行写在被注释对象的上方,不要追加在某条语句的后面。

// is current tab
const active = true
2.多行注释

多行注释使用 /* … /,而不是多行的 //。

/**
 * make() returns a new element
 * based on the passed-in tag name
 */
function make (tag) {
  // ...
 return element
}
3.注释空格

注释内容和注释符之间需要有一个空格,以增加可读性。eslint: spaced-comment。

// is current tab
const active = true
4.特殊标记

有时我们发现某个可能的 bug,但因为一些原因还没法修复;或者某个地方还有一些待完成的功能,这时我们需要使用相应的特殊标记注释来告知未来的自己或合作者。常用的特殊标记有两种:

// FIXME : 说明问题是什么
// TODO : 说明还要做什么或者问题的解决方案
5.文档类注释

文档类注释,如函数、类、文件、事件等;都使用 jsdoc 规范。

/**
 * Book类,代表一个书本.
 * @constructor
 * @param {string} title - 书本的标题.
 * @param {string} author - 书本的作者.
 */
function Book (title, author) {
 this.title = title
 this.author = author
}

4.版本管理

  • 主分支(master)
    代码合并到正式分支之前现将正式分支代码合并到主分支,始终落后正式分支一个版本。
  • 正式分支(prod)
    用于对外发布版本,任何时候在这个分支获得的代码都是线上最新版本。
  • 预生产分支(pre)
    用于发布预生产环境。
  • 测试分支(test)
    用于发布测试环境。
  • 功能分支(按照功能描述命名)
    开发某项特定功能,从prod分支上面分出来的;开发完成后,合并到test分支进行测试。
  • 补丁分支(按照Bug描述命名)
    修复正式环境bug分支,从prod上分支出来;开发完成后,再合并到test分支上进行测试。

5.其它

  • Node.js版本 v16+。
  • Vue版本 v3+。
  • UI组件库 移动端:vant;管理系统:element-plus;
  • 状态管理使用 Vuex 或 Pinia。
  • 遵循 ESLint + Prettier 的代码规范。
  • 使用 Axios 进行网络请求,封装请求模块,统一错误处理和loading状态管理。
  • 根据业务需求合理使用缓存策略。
  • 路由配置清晰,区分动态路由和静态路由。
  • 部署流程自动化,使用 Jenkins/Git 工具,找运维人员部署正式环境。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 一、项目目录规范 项目名 项目名要求使用语义清晰,简短,统一使用英文小写,并且使用-隔开,后缀要加-wx以区分是小...
    旋风猫阅读 1,482评论 0 1
  • 一、 目录结构 二、 UI框架选择 PC端Vue项目UI框架优先选择:Element UI、iView移动端Vue...
    zhudying阅读 4,478评论 4 28
  • 包名全部采用小写,不用下划线区分单词 主包名采用[公司性质].[公司名称].[项目名称]的命名方式 例如:翡翠教育...
    gyymz1993阅读 3,120评论 1 29
  • android规范文档,请勿转载!谢谢... 1. 概述 1.1 前言团队协作能够显著有效的提高工作效率,而代码规...
    kai_w阅读 1,916评论 1 2
  • React-Native开发规范 标签(空格分隔): React-Native JavaScript 一、编程规约...
    德山_阅读 1,544评论 1 0