mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
74 lines
1.6 KiB
JavaScript
74 lines
1.6 KiB
JavaScript
import Vue from 'vue';
|
|
import docConfig from './doc.config';
|
|
import DemoList from './components/DemoList';
|
|
import componentDocs from './docs-entry';
|
|
import componentDemos from './demo-entry';
|
|
import DemoPages from './components/DemoPages';
|
|
import './utils/iframe-router';
|
|
|
|
const registerRoute = (isDemo) => {
|
|
const route = [{
|
|
path: '*',
|
|
redirect: () => `/${Vue.prototype.$vantLang}/`
|
|
}];
|
|
|
|
Object.keys(docConfig).forEach((lang) => {
|
|
if (isDemo) {
|
|
route.push({
|
|
path: `/${lang}`,
|
|
component: DemoList,
|
|
meta: { lang }
|
|
});
|
|
} else {
|
|
route.push({
|
|
path: `/${lang}`,
|
|
redirect: `/${lang}/intro`
|
|
});
|
|
}
|
|
|
|
function addRoute(page, lang) {
|
|
let { path } = page;
|
|
if (path) {
|
|
path = path.replace('/', '');
|
|
|
|
let component;
|
|
if (path === 'demo') {
|
|
component = DemoPages;
|
|
} else {
|
|
component = isDemo ? componentDemos[path] : componentDocs[`${path}.${lang}`];
|
|
}
|
|
|
|
if (!component) {
|
|
return;
|
|
}
|
|
|
|
route.push({
|
|
name: lang + '/' + path,
|
|
component,
|
|
path: `/${lang}/${path}`,
|
|
meta: {
|
|
lang,
|
|
path,
|
|
name: page.title
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
const navs = docConfig[lang].nav || [];
|
|
navs.forEach(nav => {
|
|
if (nav.groups) {
|
|
nav.groups.forEach(group => {
|
|
group.list.forEach(page => addRoute(page, lang));
|
|
});
|
|
} else {
|
|
addRoute(nav, lang);
|
|
}
|
|
});
|
|
});
|
|
|
|
return route;
|
|
};
|
|
|
|
export default registerRoute;
|