UNPKG

1.29 kBJavaScriptView Raw
1const AsyncComponent = require('../React/asyncComponent');
2
3/**
4 * 兼容性处理:转换 routes 配置
5 * @param {Object} routes 路由配置
6 * @returns {Object} react-router v4 需要的配置
7 */
8module.exports = routes => convertRoute(routes);
9
10const convertRoute = route => {
11 if (typeof route !== 'object') return route;
12 if (Array.isArray(route.childRoutes)) {
13 route.routes = route.childRoutes;
14 delete route.childRoutes;
15 }
16 if (typeof route.indexRoute === 'object') {
17 if (!Array.isArray(route.routes)) route.routes = [];
18 route.routes.unshift({
19 path: '/',
20 exact: true,
21 ...route.indexRoute
22 });
23 delete route.indexRoute;
24 }
25 // if (typeof route.getComponent === 'function') {
26 // const matches = /require\(['"](.+?)['"]\).default/.exec()
27 // delete route.getComponent
28 // }
29 if (typeof route.getComponent === 'function') {
30 route.component = AsyncComponent(() =>
31 route.getComponent.then(module => module.default)
32 );
33 delete route.getComponent;
34 }
35
36 if (Array.isArray(route.routes)) {
37 route.routes = route.routes.map(route => convertRoute(route));
38 }
39
40 return route;
41};