Skip to content

三. 结构化规范

3.1 基础

vue 项目中的所有命名一定要与后端命名统一 比如权限:后端 privilege, 前端无论 router , store, api 等都必须使用 privilege 单词

3.2 使用 Vue-cli 脚手架

使用 vue-cli 来初始化项目,项目名按照上面的命名规范

3.3 目录说明

src                                  源码目录
|-- api                              所有api接口
|-- assets                           静态资源,images, icons, styles等
|-- components                       公用组件
|-- config                           配置信息
|-- constants                        常量信息,项目所有Enum, 全局常量等
|-- directives                       自定义指令
|-- filters                          过滤器,全局工具
|-- datas                            模拟数据,临时存放
|-- lib                              外部引用的插件存放及修改文件
|-- mock                             模拟接口,临时存放
|-- plugins                          插件,全局使用
|-- router                           路由,统一管理
|-- store                            vuex, 统一管理
|-- themes                           自定义样式主题
|-- views                            视图目录
|   |-- role                                 role模块名
|   |-- |-- role-list.vue                    role列表页面
|   |-- |-- role-add.vue                     role新建页面
|   |-- |-- role-update.vue                  role更新页面
|   |-- |-- components                       role模块通用组件文件夹
|   |-- employee                             employee模块
3.3.1 api 目录
  • api 中的方法名字要与后端 api url 尽量保持语义高度一致性
  • 对于 api 中的每个方法要添加注释,注释与后端api文档保持一致
javascript
正例:

后端api url:
/employee/add
/employee/delete/{id}
/employee/update

前端: employee.js
// 添加员工
addEmployee: (data) => {
    return postAxios('/employee/add', data)
},
// 更新员工信息
updateEmployee: (data) => {
    return postAxios('/employee/update', data)
},
// 删除员工
deleteEmployee: (employeeId) => {
    return postAxios('/employee/delete/' + employeeId)
}
3.3.2 assets 目录

assets 为静态资源,里面存放 images, styles, icons 等静态资源,静态资源命名格式为 kebab-case规则

3.3.3 components 目录

此目录应按照组件进行目录划分,目录命名为 PascalBase,组件命名规则也为 PascalBase

3.3.4 constants 目录

此目录存放项目所有常量

目录结构示例:

|constants
|-- index.js
|-- role.js
|-- employee.js

例如:employee.js

javascript
export const EMPLOYEE_STATUS = {
  NORMAL: {
    value: 1,
    desc: '正常'
  },
  DISABLED: {
    value: 1,
    desc: '禁用'
  },
  DELETED: {
    value: 2,
    desc: '已删除'
  }
};
export default {
  EMPLOYEE_STATUS
};
3.3.5 router 与 store 目录
  • 这两个目录一定要将业务进行拆分,不能放到一个 js 文件里
  • router 尽量按照 views 中的结构保持一致
  • store 按照业务进行拆分不同的 js 文件
3.3.6 views 目录

命名要与后端、router、api 等保持一致

目录结构示例:

├── views                                   # 路由页面组件
│   ├── home                                # home模块
│   │   ├── home.vue                        # home页面
│   │   ├── components                      # home页面拆分组件
│   │   │    ├── StatisticalList.vue        # home页面统计列表组件
│   │   │    ├── Modal.vue                  # home页面弹窗组件
│   ├── role                                # role模块
│   │   ├── role.vue                        # role页面
│   │   ├── role-list.vue                   # role列表页面
│   ├── login.vue                           # login页面
│   ├── behavior-log                        # behavior-log模块