123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import navConfig from './nav.config.json';
- import langs from './i18n/route.json';
- const registerRoute = (navConfig) => {
- let route = [];
- Object.keys(navConfig).forEach((lang, index) => {
- let navs = navConfig[lang];
- route.push({
- path: `/${ lang }/component`,
- redirect: `/${ lang }/component/installation`,
- component: require(`./pages/${ lang }/component.vue`),
- children: []
- });
- navs.forEach(nav => {
- if (nav.groups) {
- nav.groups.forEach(group => {
- group.list.forEach(nav => {
- addRoute(nav, lang, index);
- });
- });
- } else if (nav.children) {
- nav.children.forEach(nav => {
- addRoute(nav, lang, index);
- });
- } else {
- addRoute(nav, lang, index);
- }
- });
- });
- function addRoute(page, lang, index) {
- const component = page.path === '/changelog'
- ? require(`./pages/${ lang }/changelog.vue`)
- : require(`./docs/${ lang }${page.path}.md`);
- let child = {
- path: page.path.slice(1),
- meta: {
- title: page.title || page.name,
- description: page.description,
- lang
- },
- name: 'component-' + (page.title || page.name),
- component: component.default || component
- };
- route[index].children.push(child);
- }
- return route;
- };
- let route = registerRoute(navConfig);
- const generateMiscRoutes = function(lang) {
- let guideRoute = {
- path: `/${ lang }/guide`, // 指南
- redirect: `/${ lang }/guide/design`,
- component: require(`./pages/${ lang }/guide.vue`),
- children: [{
- path: 'design', // 设计原则
- name: 'guide-design' + lang,
- meta: { lang },
- component: require(`./pages/${ lang }/design.vue`)
- }, {
- path: 'nav', // 导航
- name: 'guide-nav' + lang,
- meta: { lang },
- component: require(`./pages/${ lang }/nav.vue`)
- }]
- };
- let resourceRoute = {
- path: `/${ lang }/resource`, // 资源
- meta: { lang },
- name: 'resource' + lang,
- component: require(`./pages/${ lang }/resource.vue`)
- };
- let indexRoute = {
- path: `/${ lang }`, // 首页
- meta: { lang },
- name: 'home' + lang,
- component: require(`./pages/${ lang }/index.vue`)
- };
- return [guideRoute, resourceRoute, indexRoute];
- };
- langs.forEach(lang => {
- route = route.concat(generateMiscRoutes(lang.lang));
- });
- route.push({
- path: '/play',
- name: 'play',
- component: require('./play/index.vue')
- });
- let userLanguage = localStorage.getItem('ELEMENT_LANGUAGE') || window.navigator.language || 'en-US';
- let defaultPath = '/en-US';
- if (userLanguage.indexOf('zh-') !== -1) {
- defaultPath = '/zh-CN';
- }
- route = route.concat([{
- path: '/',
- redirect: defaultPath
- }, {
- path: '*',
- redirect: defaultPath
- }]);
- export default route;
|