---
group:
    title: 项目开发规范
    order: 14
title: 3.命名规范
---


### 路由命名规范
1、`name`、`path` 必须保证唯一性配置文件中不能使用同样的值
```
/**
 * @name umi 的路由配置
 * @description 只支持 path,component,routes,redirect,wrappers,name,icon 的配置
 * @param path  path 只支持两种占位符配置，第一种是动态参数 :id 的形式，第二种是 * 通配符，通配符只能出现路由字符串的最后。
 * @param component 配置 location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径，也可以是相对路径，如果是相对路径，会从 src/pages 开始找起。
 * @param routes 配置子路由，通常在需要为多个路径增加 layout 组件时使用。
 * @param redirect 配置路由跳转
 * @param wrappers 配置路由组件的包装组件，通过包装组件可以为当前的路由组件组合进更多的功能。 比如，可以用于路由级别的权限校验
 * @param name 配置路由的标题，默认读取国际化文件 menu.ts 中 menu.xxxx 的值，如配置 name 为 login，则读取 menu.ts 中 menu.login 的取值作为标题名称(不开启语言包时，直接使用其名称;开启语言包,则会按JSON层级去查找locale的值)
 * @param icon 配置路由的图标，取值参考 https://ant.design/components/icon-cn， 注意去除风格后缀和大小写，如想要配置图标为 <StepBackwardOutlined /> 则取值应为 stepBackward 或 StepBackward，如想要配置图标为 <UserOutlined /> 则取值应为 user 或者 User
 * @param 【自定义字段】 menuCode【自定义字段】原name替换成用menuCodeName，用于判断后端返回的是否有权限
 * @param access 配置路由访问权限，对应配置条件可查看'src/access.ts'(passApplication:应用权限；passAuthority：菜单权限；passIntegration：综合集成权限）
 * @param placeIn 菜单放置位置，默认不配置，放置右上角则配置为'topRight'
 * @param contentType (嵌套iframe使用,分别：1.'default' 带左侧菜单；2.'noSide' 不带左侧菜单；3.'noLayout' 独立页面，可当成无layout)
 * @param sideMenu/menuRender 是否显示左侧菜单，仅限制于一级菜单配置
 * @doc https://umijs.org/docs/guides/routes
 * // 其他配置项
 * https://umijs.org/docs/max/layout-menu#%E6%89%A9%E5%B1%95%E7%9A%84%E8%B7%AF%E7%94%B1%E9%85%8D%E7%BD%AE
 */
 
  {
    path: '/system',
    name: 'system',
    title: '系统管理',
    menuType: '0', // 菜单类型 目录
    routes: [
        {
          path: '/system/setting/menu',
          name: 'systemMenu',
          title: '菜单管理',
          component: './System/Setting/Menu',
          access: 'passAuthority',
          menuType: '1', // 菜单类型 菜单
        },
    ],
  },
```

#### 路由配置项说明
| 参数字段      | 说明  |   类型   |必填|规范说明 |
|----------|------|-------------|------|-----|
| name | 当前菜单路由键值（将对应后台接口的menuCode) | String | 是 |统一以小驼峰形式，如有上一级则必须加上上一级的名称例如：systemMenu,同路由配置相对应|
| path | 菜单路由path | String | 是 |(小写配置，如属于子路由，必须加其父级路由如：/system/menu,(system：父级路由))|
| title | 菜单的标题中文（将对应页面title) | String | 是 ||
| menuType | 菜单类型 | String |  是 |('0'表示目录，'1'表示菜单，对应后台接口的menuType）|
| component | 当前路由页面结构（一般菜单类型为'1'时此项必须配置） | String | 否 |-|
| routes | 子路由（一般菜单类型为'0'时此项必须配置） | Array | 否  |-|
| hideInMenu | 隐藏菜单，不展示在菜单列表中 | Boolean | 否 |-|
| hideChildrenInMenu | 隐藏子菜单，不展示子菜单在菜单列表中 | Boolean | 否 |-|
| authority | 权限角色值（当前路由菜单是否有权限） | Array | 否 |-|
| icon | 菜单展示图标| String |否|-|
| placeIn | 菜单放置位置| String |否| 左侧：默认不配置；或者右上角`topRight`|
| menuCode | 菜单类型 | String |  是 |('0'表示目录，'1'表示菜单，对应后台接口的menuType）|
| access | 配置路由访问权限，对应配置条件可查看'src/access.ts' | String |  否|`passApplication`:应用权限；`passAuthority`：菜单权限；`passIntegration`：综合集成权限|

### 接口命名规范

1、`service`与`mock`文件里面的填写，需要在对应模块下统一配置一个基础URL：

如： const baseUrl = `/api/sys/user`

2、 ` models`里面 namespace命令，统一以 “上级模块命名+当前模块的小驼峰形式”
如"systemMenu"表示：系统设置->菜单管理

命名示例

| 后台常用接口   |请求类型    | service导出命名参考 |   model里面对应接口获取effects命名参考   |model内state命名参考|
|----------|------|------|-------------|------|
| 查询列表： XXX/page | GET  | queryMenuData| *fetch_menuData |menuData|
| 查询详情：XXX/detail | GET   | queryMenuDetail| *fetch_menuInfo |menuCurrentInfo|
| 新增： XXX/save| POST   | saveMenu| *save_menu |-|
| 修改： XXX/update|  POST  | updateMenu| *update_menu|-|
| 删除： XXX/delete|  POST | deleteMenu| *delete_menu|-|
| 查询列表（不分页，用于下拉）： XXX/dropdown |   GET | queryMenuDropdown| *fetch_menu_list|menuListData|
| 查询树： XXX/tree|   GET | queryMenuTree| *fetch_menu_tree|menuTreeData|


