feat: split doc files (#4792)

pull/4838/head
cinwell.li 2017-05-12 16:33:36 +08:00 committed by baiyaaaaa
parent 784e9fb705
commit cc441fae2b
3 changed files with 48 additions and 9 deletions

View File

@ -55,6 +55,11 @@ cooking.add('loader.md', {
loader: 'vue-markdown-loader' loader: 'vue-markdown-loader'
}); });
cooking.add(
'output.chunkFilename',
isProd ? '[name].[chunkhash:7].js' : '[name].js'
);
cooking.add('vueMarkdown', { cooking.add('vueMarkdown', {
use: [ use: [
[require('markdown-it-anchor'), { [require('markdown-it-anchor'), {

View File

@ -146,7 +146,7 @@
computed: { computed: {
lang() { lang() {
return this.$route.path.split('/')[1]; return this.$route.path.split('/')[1] || 'zh-CN';
}, },
langConfig() { langConfig() {

View File

@ -1,6 +1,40 @@
import navConfig from './nav.config.json'; import navConfig from './nav.config.json';
import langs from './i18n/route.json'; import langs from './i18n/route.json';
const LOAD_MAP = {
'zh-CN': name => {
return r => require.ensure([], () =>
r(require(`./pages/zh-CN/${name}.vue`)),
'zh-CN');
},
'en-US': name => {
return r => require.ensure([], () =>
r(require(`./pages/en-US/${name}.vue`)),
'en-US');
}
};
const load = function(lang, path) {
return LOAD_MAP[lang](path);
};
const LOAD_DOCS_MAP = {
'zh-CN': path => {
return r => require.ensure([], () =>
r(require(`./docs/zh-CN${path}.md`)),
'zh-CN');
},
'en-US': path => {
return r => require.ensure([], () =>
r(require(`./docs/en-US${path}.md`)),
'en-US');
}
};
const loadDocs = function(lang, path) {
return LOAD_DOCS_MAP[lang](path);
};
const registerRoute = (navConfig) => { const registerRoute = (navConfig) => {
let route = []; let route = [];
Object.keys(navConfig).forEach((lang, index) => { Object.keys(navConfig).forEach((lang, index) => {
@ -8,7 +42,7 @@ const registerRoute = (navConfig) => {
route.push({ route.push({
path: `/${ lang }/component`, path: `/${ lang }/component`,
redirect: `/${ lang }/component/installation`, redirect: `/${ lang }/component/installation`,
component: require(`./pages/${ lang }/component.vue`), component: load(lang, 'component'),
children: [] children: []
}); });
navs.forEach(nav => { navs.forEach(nav => {
@ -30,8 +64,8 @@ const registerRoute = (navConfig) => {
}); });
function addRoute(page, lang, index) { function addRoute(page, lang, index) {
const component = page.path === '/changelog' const component = page.path === '/changelog'
? require(`./pages/${ lang }/changelog.vue`) ? load(lang, 'changelog')
: require(`./docs/${ lang }${page.path}.md`); : loadDocs(lang, page.path);
let child = { let child = {
path: page.path.slice(1), path: page.path.slice(1),
meta: { meta: {
@ -55,17 +89,17 @@ const generateMiscRoutes = function(lang) {
let guideRoute = { let guideRoute = {
path: `/${ lang }/guide`, // 指南 path: `/${ lang }/guide`, // 指南
redirect: `/${ lang }/guide/design`, redirect: `/${ lang }/guide/design`,
component: require(`./pages/${ lang }/guide.vue`), component: load(lang, 'guide'),
children: [{ children: [{
path: 'design', // 设计原则 path: 'design', // 设计原则
name: 'guide-design' + lang, name: 'guide-design' + lang,
meta: { lang }, meta: { lang },
component: require(`./pages/${ lang }/design.vue`) component: load(lang, 'design')
}, { }, {
path: 'nav', // 导航 path: 'nav', // 导航
name: 'guide-nav' + lang, name: 'guide-nav' + lang,
meta: { lang }, meta: { lang },
component: require(`./pages/${ lang }/nav.vue`) component: load(lang, 'nav')
}] }]
}; };
@ -73,14 +107,14 @@ const generateMiscRoutes = function(lang) {
path: `/${ lang }/resource`, // 资源 path: `/${ lang }/resource`, // 资源
meta: { lang }, meta: { lang },
name: 'resource' + lang, name: 'resource' + lang,
component: require(`./pages/${ lang }/resource.vue`) component: load(lang, 'resource')
}; };
let indexRoute = { let indexRoute = {
path: `/${ lang }`, // 首页 path: `/${ lang }`, // 首页
meta: { lang }, meta: { lang },
name: 'home' + lang, name: 'home' + lang,
component: require(`./pages/${ lang }/index.vue`) component: load(lang, 'index')
}; };
return [guideRoute, resourceRoute, indexRoute]; return [guideRoute, resourceRoute, indexRoute];