Przeglądaj źródła

feat: split doc files (#4792)

cinwell.li 8 lat temu
rodzic
commit
cc441fae2b
3 zmienionych plików z 48 dodań i 9 usunięć
  1. 5 0
      build/cooking.demo.js
  2. 1 1
      examples/components/footer.vue
  3. 42 8
      examples/route.config.js

+ 5 - 0
build/cooking.demo.js

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

+ 1 - 1
examples/components/footer.vue

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

+ 42 - 8
examples/route.config.js

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