配置菜单
- 配置方法:打开src/layout/menu.json文件,按项目需求配置菜单项
- 配置说明:
``` json
[
{
// 二级菜单的配置同一级菜单
"id": "唯一标识",
"name": "绑定路由名称",
"title": "显示在菜单项中的标题",
"isFolder": false,
"icon": "图标"
},
{
"id": "唯一标识",
"title": "显示在菜单项中的标题",
"isFolder": true, 是否是文件夹
"icon": "图标",
"children": [
{
// 二级菜单的配置同一级菜单
"id": "唯一标识",
"name": "绑定路由名称",
"title": "显示在菜单项中的标题",
"icon": "图标"
}...
]
},
...
]
配置路由
- 配置方法:打开src/router/routes.js文件,按项目需求配置路由
- 配置说明:
``` json
[
{
path: '/login', // url匹配/login
name: 'login', // 路由名称,即路由标识
meta: { title: '登录页面' }, // 附加元数据,非必填
component: () => import('@/views/account/login.vue') // 绑定动态组件,一般是绑定@/views中的视图页面
},
{
path: '/', // 路由按自上到下的顺序直至匹配到path为至,此处路由定义在/login之下,因此匹配的是除/login外以/开头的其它url
component: () => import('@/layout/index.vue'),
meta: { authorize: false, title: 'vue-project' }, // 附加元数据authorize表示此路由是否需要进行登录验证
children: [ // 二级子路由
{
path: 'test-view-1-1',
name: 'test-view-1-1',
component: () => import('@/views/test-view-1-1/index.vue'),
meta: { title: '测试页面1-1' }
},
...
]
}
]
- path支持动态匹配、正则匹配等,如 /location/:id、/location/:id(\d+),详细内容参考vue-router官方文档
- 登录验证的实现方法在src/libs/util.js中的checkLogin(),src/router/index.js中的authorize
新增功能点
- src/views/下新建页面如:page1.vue或page1/index.vue
- 配置路由,将路由动态绑定此页面:如{path:'/page1',name:'page1',component: () => import('@/views/page1/index.vue')}
- 配置菜单,将菜单通过路由标识绑定路由,如:"name": "page1",
- 注意事项:以上三者的绑定关系是路由绑定页面(通过component属性),菜单绑定路由(通过name属性)
代码规范
- 命名规范,没有强制的命名规范,原则上在单文件内中,属性、方法、api等使用小驼峰命名,类、组件使用大驼峰、Pascal命名,全局常量使用全大写加下划线命名,api使用RESTful规范
- 代码文件存放方式,src/views中只存放页面或与页面所绑定的组件,src/components存放自定义公共组件、二次封装组件,在实际开发中,通常建议把一个页面分隔成若干个功能独立、逻辑关联的小组件,然后进行拼装,方便后期维护、复用和迁移。
http请求
- fetch,此示例项目中使用fetch进行api请求,fetch是es6特性中的一种,通常可满足大部分使用场景
- 接口返回值,src/libs/http是http请求工具类,统一处理接口返回的错误码,示例项目中以接口返回{err_code:0, err_msg:'',result:{}}为例,实际项目中,要依据服务端的规范进行调整
换肤
- 实现方法,动态创建标签写入到中,此示例项目中已实现
- 自定义皮肤,存放在public/skin中,每个皮肤单独一个文件
- 部署注意事项,web.config.js中的skinRoot定义了部署时的皮肤文件路径
多语言
- 实现方法,vue-i18n库,此示例项目中已集成
- 自定义文本,在src/locale/lang/中配置
- 使用方法,组件已全局注册,在程序中使用$t('标识')即可绑定vue-i18n,具体参考src/views/test-view-1-1/index.vue