route.config.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import navConfig from './nav.config.json';
  2. const registerRoute = (config) => {
  3. let route = [{
  4. path: '/component',
  5. redirect: '/component/quickstart',
  6. component: require('./pages/component.vue'),
  7. children: []
  8. }];
  9. function addRoute(page) {
  10. const component = page.path === '/changelog' ? require('./pages/changelog.vue') : require(`./docs${page.path}.md`);
  11. let child = {
  12. path: page.path.slice(1),
  13. meta: {
  14. title: page.title || page.name,
  15. description: page.description
  16. },
  17. component: component.default || component
  18. };
  19. if (page.path === '/changelog') {
  20. child.redirect = '/changelog';
  21. }
  22. route[0].children.push(child);
  23. }
  24. config
  25. .map(nav => {
  26. if (nav.groups) {
  27. nav.groups.map(group => {
  28. group.list.map(page => {
  29. addRoute(page);
  30. });
  31. });
  32. } else if (nav.children) {
  33. nav.children.map(page => {
  34. addRoute(page);
  35. });
  36. } else {
  37. addRoute(nav);
  38. }
  39. });
  40. return { route, navs: config };
  41. };
  42. const route = registerRoute(navConfig);
  43. let guideRoute = {
  44. path: '/guide',
  45. name: '指南',
  46. redirect: '/guide/design',
  47. component: require('./pages/guide.vue'),
  48. children: [{
  49. path: 'design',
  50. name: '设计原则',
  51. component: require('./pages/design.vue')
  52. }, {
  53. path: 'nav',
  54. name: '导航',
  55. component: require('./pages/nav.vue')
  56. }]
  57. };
  58. let resourceRoute = {
  59. path: '/resource',
  60. name: '资源',
  61. component: require('./pages/resource.vue')
  62. };
  63. let indexRoute = {
  64. path: '/',
  65. name: '首页',
  66. component: require('./pages/index.vue')
  67. };
  68. let changeLogRoute = {
  69. path: '/changelog',
  70. component: require('./pages/changelog.vue')
  71. };
  72. route.route = route.route.concat([indexRoute, guideRoute, resourceRoute, changeLogRoute]);
  73. route.route.push({
  74. path: '*',
  75. component: require('./docs/home.md')
  76. });
  77. export const navs = route.navs;
  78. export default route.route;