starzhangkiss 2019-06-27
前几天同事离职,他的项目就交接到了我手里,当我打开路由文件的时候,看见的是这个
...
由于屏幕不是很大截图只看见了一部分。。
看见这么一堆我的内心是mmp的。。
这个项目千万不要求改的需求,不然费眼。。
不过vue的路由都是这么乱的么?
赶紧翻了下大佬们的git
...
大佬的也是,只不过乱的稍微好看点。。。
因此萌生我优化路由文件的想法
路由里大部分都是重复的东西,而且都是一个obj,所以我写了一个函数
/** * 简化router文件 * @param {[String]} path 定义路由路径 * @param {[String]} name 挂在文件路径 * @param {[String]} title 页面title * @param {Object} [other={}] 路由其他参数 * @param {Array} [children=[]] 嵌套路由配置 * @return {Object} 返回router可用obj */ function path(path, name, title, other = {}, children = []) { return Object.assign({ path: path, name: name, meta: { title: title, }, component: (resolve) => require(['../pages/' + name + '.vue'], resolve), children: children, }, other) }
这样一个每个路由看起来就直观了许多
export default new Router({ mode: 'history', routes: [ path('/', 'index', '首页',{redirect:'/home/index'}), path('/login', 'public/login', '登录'), ] })
当然嵌套路由也是可以的
//嵌套结构页 path('/home', 'home', '', '', [ path('index', 'public/home_index', ''), ]),
除此之外,还可以拆分出路由根据模块存放,
let page = []; // 测试页 page.push( path('form', 'test/form', '测试'), path('table', 'test/table', 'acc'), ); // 流程管理 page.push( path('form', 'process/list', ''), ); export default new Router({ mode: 'history', routes: [ //嵌套结构页 path('/home', 'home', '', '', [ path('index', 'public/home_index', ''), // 上下结构 path('aside', 'public/aside', '', '', page), // 上左右结构 ]), ] })
随着项目的扩大,也可以用多个文件管理路由。
虽然这个办法没啥技术含量,但是对我来说确实把路由文件变得直观了许多。
希望能帮到大家,最后是demo的整个文件
import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) /** * 简化router文件 * @param {[String]} path 定义路由路径 * @param {[String]} name 挂在文件路径 * @param {[String]} title 页面title * @param {Object} [other={}] 路由其他参数 * @param {Array} [children=[]] 嵌套路由配置 * @return {Object} 返回router可用obj */ function path(path, name, title, other = {}, children = []) { return Object.assign({ path: path, name: name, meta: { title: title, }, component: (resolve) => require(['../pages/' + name + '.vue'], resolve), children: children, }, other) } let page = []; // 测试页 page.push( path('form', 'test/form', '测试'), path('table', 'test/table', 'acc'), ); // 流程管理 page.push( path('form', 'process/list', ''), ); export default new Router({ mode: 'history', routes: [ path('/', 'index', '首页',{redirect:'/home/index'}), path('/login', 'public/login', '登录'), //嵌套结构页 path('/home', 'home', '', '', [ path('index', 'public/home_index', ''), // 上下结构 path('aside', 'public/aside', '', '', page), // 上左右结构 ]), ] })
background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT