Vue 规范

前提

  • Vue 项目开发要遵循前面提到的样式规范、JavaScript 规范、Typescript 规范。

项目命名

  • 项目名使用中横线(-)作为分隔符。

原因:

根据 HTML 和 XML 规范,中横线(-)被定义为有效的标识符字符。而下划线(_)则不是一个有效的标识符字符。


常用搭配词

handlehandleClickhandleDelete 表达的都是执行一个事件处理函数,用于按钮点击时事件处理。

原因:

约定俗成的命名方法,有助于团队内部协作和提高代码的可维护性。


全局方法

  • 全局方法统一以 $ 符号开头。例如 $add

原因:

方便区分全局方法与页面内定义的方法。

// @/utils/index.js
/**
 * 求两数之和
 * @param {number} num1 第一个数
 * @param {number} num2 第二个数
 * @returns {number} 相加结果
 */
export function add(num1, num2) {
  return num1 + num2
}

// @/main.js
import { add } from '@/utils/index.js'

Vue.prototype.$add = add
// @/utils/index.ts
/**
 * 求两数之和
 * @param {number} num1 第一个数
 * @param {number} num2 第二个数
 * @returns {number} 相加结果
 */
export function add(num1: number, num2: number) {
  return num1 + num2
}

// @/main.ts
import { add } from '@/utils/index.ts'

app.config.globalProperties.$add = add

公共组件


  • 公共组件统一放到 @/components 目录下,且应该给各个组件创建一个独立的文件夹(文件夹采用大驼峰命名,例如 SearchBox),文件夹下创建 index.vue 作为组件入口;所有定义的公共组件,都应该在该组件目录下编写组件使用说明书。
my-project
├── src
│    └── components            // 公共组件文件夹
│    │   └── SearchBox             // 搜索组件
│    │       └── index.vue             // 组件入口
│    │       └── README.md             // 组件使用说明书
│    └── ...
└── ...

原因:

集中管理,方便查找。给组件一个独立的文件夹,对于比较复杂的组件,需要拆分多个页面时,这将很有帮助;编写组件使用说明书方便其他开发人员使用公共组件。


API 接口

  • 所有 API 接口文件统一放到 @/apis 目录下,根据各模块不同进行分组放置。
my-project
├── src
│    └── apis                   // API 接口文件夹
│    │   └── userManage             // 用户管理
│    │       └── index.ts               // 接口文件
│    │   └── menuManage             // 菜单管理
│    │       └── index.ts               // 接口文件
│    └── ...
└── ...

原因:

集中管理,方便查找。


枚举数据

  • 所有枚举定义文件统一放到 @/enums 目录下,且文件以 模块名.enum.ts 的范式命名。
my-project
├── src
│    └── enums                    // 枚举文件夹
│    │   └── userManage               // 用户管理
│    │       └── index.ts                 // 枚举文件
│    │   └── menuManage               // 菜单管理
│    │       └── index.ts                 // 枚举文件
│    └── ...
└── ...
my-project
├── src
│    └── enums                    // 枚举文件夹
│    │   └── userManage.enum.ts       // 【用户管理】枚举文件
│    │   └── menuManage.enum.ts       // 【菜单管理】枚举文件
│    └── ...
└── ...

原因:

集中管理,方便查找。


TypeScript 类型或接口定义

  • 类型或接口定义文件统一放在 @/types 目录下,且文件以 模块名.type.ts 的范式命名。
my-project
├── src
│    └── types                    // 类型文件夹
│    │   └── userManage               // 用户管理
│    │       └── index.ts                 // 类型文件
│    │   └── menuManage               // 菜单管理
│    │       └── index.ts                 // 类型文件
│    └── ...
└── ...
my-project
├── src
│    └── types                    // 类型文件夹
│    │   └── userManage.type.ts       // 【用户管理】类型文件
│    │   └── menuManage.type.ts       // 【菜单管理】类型文件
│    └── ...
└── ...

原因:

类型文件单独存放,避免与页面逻辑文件混放造成干扰开发者的情况。


移除打印

  • 请在代码提交前删除页面中所有的 console 打印。

原因:

虽然项目打包后我们一般会去除所有打印信息,但是在开发阶段,console 打印在 devtools 打开的情况下会造成内存泄漏。而且过多的打印信息会有时会干扰到其他开发者调试代码。


移除冗余注释

  • 如果由于需求变更,原本的一段旧代码不适用时,请删除它,而不是注释它。你或许担心未来这段代码需要重新使用时通过 SVN 查找过于麻烦,我认为你大可不必吝啬这一点查找的时间,并且,大多数情况下你的这一段旧代码再也不会使用,它会一直躺在那。

原因:

冗余注释增加代码管理成本,导致后续维护者不确定这段旧代码是否重要。