From 69fc52d4e9d1751b5ce46528605e4fd8586cf757 Mon Sep 17 00:00:00 2001 From: Pan Date: Fri, 28 Jul 2017 15:12:32 +0800 Subject: [PATCH] refine router.js --- src/router/index.js | 223 +++++++++++++++++--------------------------- 1 file changed, 83 insertions(+), 140 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index f7a483f6..3e6372e2 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -3,89 +3,30 @@ import Router from 'vue-router'; const _import = require('./_import_' + process.env.NODE_ENV); // in development env not use Lazy Loading,because Lazy Loading large page will cause webpack hot update too slow.so only in production use Lazy Loading +Vue.use(Router); + /* layout */ import Layout from '../views/layout/Layout'; -/* login */ -const Login = _import('login/index'); -const authRedirect = _import('login/authredirect'); - -/* dashboard */ -const dashboard = _import('dashboard/index'); - -/* Introduction */ -const Introduction = _import('introduction/index'); - -/* components */ -const componentsIndex = _import('components/index'); -const Tinymce = _import('components/tinymce'); -const Markdown = _import('components/markdown'); -const JsonEditor = _import('components/jsoneditor'); -const DndList = _import('components/dndlist'); -const AvatarUpload = _import('components/avatarUpload'); -const Dropzone = _import('components/dropzone'); -const Sticky = _import('components/sticky'); -const SplitPane = _import('components/splitpane'); -const CountTo = _import('components/countTo'); -const Mixin = _import('components/mixin'); -const BackToTop = _import('components/backToTop') - -/* charts */ -const chartIndex = _import('charts/index'); -const KeyboardChart = _import('charts/keyboard'); -const KeyboardChart2 = _import('charts/keyboard2'); -const LineMarker = _import('charts/line'); -const MixChart = _import('charts/mixChart'); - -/* error page */ -const Err404 = _import('error/404'); -const Err401 = _import('error/401'); - -/* error log */ -const ErrorLog = _import('errlog/index'); - -/* excel */ -const ExcelDownload = _import('excel/index'); -const SelectExcelDownload = _import('excel/selectExcel'); - -/* theme */ -const Theme = _import('theme/index'); - -/* example */ -const TableLayout = _import('example/table/index'); -const DynamicTable = _import('example/table/dynamictable'); -const Table = _import('example/table/table'); -const DragTable = _import('example/table/dragTable'); -const InlineEditTable = _import('example/table/inlineEditTable'); - -const Form = _import('example/form'); -const Tab = _import('example/tab/index'); - -/* permission */ -const Permission = _import('permission/index'); - -Vue.use(Router); - - /** - * icon : the icon show in the sidebar - * hidden : if hidden:true will not show in the sidebar - * redirect : if redirect:noredirect will not redirct in the levelbar - * noDropdown : if noDropdown:true will not has submenu - * meta : { role: ['admin'] } will control the page role - **/ - +/** +* icon : the icon show in the sidebar +* hidden : if `hidden:true` will not show in the sidebar +* redirect : if `redirect:noredirect` will no redirct in the levelbar +* noDropdown : if `noDropdown:true` will has no submenu +* meta : { role: ['admin'] } will control the page role +**/ export const constantRouterMap = [ - { path: '/login', component: Login, hidden: true }, - { path: '/authredirect', component: authRedirect, hidden: true }, - { path: '/404', component: Err404, hidden: true }, - { path: '/401', component: Err401, hidden: true }, + { path: '/login', component: _import('login/index'), hidden: true }, + { path: '/authredirect', component: _import('login/authredirect'), hidden: true }, + { path: '/404', component: _import('error/404'), hidden: true }, + { path: '/401', component: _import('error/401'), hidden: true }, { path: '/', component: Layout, redirect: '/dashboard', name: '首页', hidden: true, - children: [{ path: 'dashboard', component: dashboard }] + children: [{ path: 'dashboard', component: _import('dashboard/index') }] }, { path: '/introduction', @@ -93,7 +34,7 @@ export const constantRouterMap = [ redirect: '/introduction/index', icon: 'xinrenzhinan', noDropdown: true, - children: [{ path: 'index', component: Introduction, name: '简述' }] + children: [{ path: 'index', component: _import('introduction/index'), name: '简述' }] } ] @@ -112,7 +53,7 @@ export const asyncRouterMap = [ icon: 'quanxian', meta: { role: ['admin'] }, noDropdown: true, - children: [{ path: 'index', component: Permission, name: '权限测试页', meta: { role: ['admin'] } }] + children: [{ path: 'index', component: _import('permission/index'), name: '权限测试页', meta: { role: ['admin'] } }] }, { path: '/components', @@ -121,18 +62,18 @@ export const asyncRouterMap = [ name: '组件', icon: 'zujian', children: [ - { path: 'index', component: componentsIndex, name: '介绍 ' }, - { path: 'tinymce', component: Tinymce, name: '富文本编辑器' }, - { path: 'markdown', component: Markdown, name: 'Markdown' }, - { path: 'jsoneditor', component: JsonEditor, name: 'JSON编辑器' }, - { path: 'dndlist', component: DndList, name: '列表拖拽' }, - { path: 'splitpane', component: SplitPane, name: 'SplitPane' }, - { path: 'avatarupload', component: AvatarUpload, name: '头像上传' }, - { path: 'dropzone', component: Dropzone, name: 'Dropzone' }, - { path: 'sticky', component: Sticky, name: 'Sticky' }, - { path: 'countto', component: CountTo, name: 'CountTo' }, - { path: 'mixin', component: Mixin, name: '小组件' }, - { path: 'backtotop', component: BackToTop, name: '返回顶部' } + { path: 'index', component: _import('components/index'), name: '介绍 ' }, + { path: 'tinymce', component: _import('components/tinymce'), name: '富文本编辑器' }, + { path: 'markdown', component: _import('components/markdown'), name: 'Markdown' }, + { path: 'jsoneditor', component: _import('components/jsoneditor'), name: 'JSON编辑器' }, + { path: 'dndlist', component: _import('components/dndlist'), name: '列表拖拽' }, + { path: 'splitpane', component: _import('components/splitpane'), name: 'SplitPane' }, + { path: 'avatarupload', component: _import('components/avatarUpload'), name: '头像上传' }, + { path: 'dropzone', component: _import('components/dropzone'), name: 'Dropzone' }, + { path: 'sticky', component: _import('components/sticky'), name: 'Sticky' }, + { path: 'countto', component: _import('components/countTo'), name: 'CountTo' }, + { path: 'mixin', component: _import('components/mixin'), name: '小组件' }, + { path: 'backtotop', component: _import('components/backToTop'), name: '返回顶部' } ] }, { @@ -142,53 +83,13 @@ export const asyncRouterMap = [ name: '图表', icon: 'tubiaoleixingzhengchang', children: [ - { path: 'index', component: chartIndex, name: '介绍' }, - { path: 'keyboard', component: KeyboardChart, name: '键盘图表' }, - { path: 'keyboard2', component: KeyboardChart2, name: '键盘图表2' }, - { path: 'line', component: LineMarker, name: '折线图' }, - { path: 'mixchart', component: MixChart, name: '混合图表' } + { path: 'index', component: _import('charts/index'), name: '介绍' }, + { path: 'keyboard', component: _import('charts/keyboard'), name: '键盘图表' }, + { path: 'keyboard2', component: _import('charts/keyboard2'), name: '键盘图表2' }, + { path: 'line', component: _import('charts/line'), name: '折线图' }, + { path: 'mixchart', component: _import('charts/mixChart'), name: '混合图表' } ] }, - { - path: '/errorpage', - component: Layout, - redirect: 'noredirect', - name: '错误页面', - icon: '404', - children: [ - { path: '401', component: Err401, name: '401' }, - { path: '404', component: Err404, name: '404' } - ] - }, - { - path: '/errlog', - component: Layout, - redirect: 'noredirect', - name: 'errlog', - icon: 'bug', - noDropdown: true, - children: [{ path: 'log', component: ErrorLog, name: '错误日志' }] - }, - { - path: '/excel', - component: Layout, - redirect: 'noredirect', - name: 'excel', - icon: 'EXCEL', - children: [ - { path: 'download', component: ExcelDownload, name: '导出excel' }, - { path: 'download2', component: SelectExcelDownload, name: '选择导出excel' } - ] - }, - { - path: '/theme', - component: Layout, - redirect: 'noredirect', - name: 'theme', - icon: 'theme', - noDropdown: true, - children: [{ path: 'index', component: Theme, name: '换肤' }] - }, { path: '/example', component: Layout, @@ -198,21 +99,63 @@ export const asyncRouterMap = [ children: [ { path: '/example/table', - component: TableLayout, + component: _import('example/table/index'), redirect: '/example/table/table', name: 'Table', + icon: 'table', children: [ - { path: 'dynamictable', component: DynamicTable, name: '动态table' }, - { path: 'dragtable', component: DragTable, name: '拖拽table' }, - { path: 'inline_edit_table', component: InlineEditTable, name: 'table内编辑' }, - { path: 'table', component: Table, name: '综合table' } + { path: 'dynamictable', component: _import('example/table/dynamictable'), name: '动态table' }, + { path: 'dragtable', component: _import('example/table/dragTable'), name: '拖拽table' }, + { path: 'inline_edit_table', component: _import('example/table/inlineEditTable'), name: 'table内编辑' }, + { path: 'table', component: _import('example/table/table'), name: '综合table' } ] }, - { path: 'form/edit', component: Form, name: '编辑Form', meta: { isEdit: true } }, - { path: 'form/create', component: Form, name: '创建Form' }, + { path: 'form/edit', icon: 'ziliaoshouce', component: _import('example/form'), name: '编辑Form', meta: { isEdit: true } }, + { path: 'form/create', icon: 'yinhangqia', component: _import('example/form'), name: '创建Form' }, - { path: 'tab/index', component: Tab, name: 'Tab' } + { path: 'tab/index', icon: 'mobankuangjia', component: _import('example/tab/index'), name: 'Tab' } ] }, + { + path: '/errorpage', + component: Layout, + redirect: 'noredirect', + name: '错误页面', + icon: '404', + children: [ + { path: '401', component: _import('error/401'), name: '401' }, + { path: '404', component: _import('error/404'), name: '404' } + ] + }, + { + path: '/errlog', + component: Layout, + redirect: 'noredirect', + name: 'errlog', + icon: 'bug', + noDropdown: true, + children: [{ path: 'log', component: _import('errlog/index'), name: '错误日志' }] + }, + { + path: '/excel', + component: Layout, + redirect: 'noredirect', + name: 'excel', + icon: 'EXCEL', + children: [ + { path: 'download', component: _import('excel/index'), name: '导出excel' }, + { path: 'download2', component: _import('excel/selectExcel'), name: '选择导出excel' } + ] + }, + { + path: '/theme', + component: Layout, + redirect: 'noredirect', + name: 'theme', + icon: 'theme', + noDropdown: true, + children: [{ path: 'index', component: _import('theme/index'), name: '换肤' }] + }, + { path: '*', redirect: '/404', hidden: true } ];