UNPKG

1.3 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))
18 route.routes = []
19 route.routes.unshift({
20 path: '/',
21 exact: true,
22 ...route.indexRoute
23 })
24 delete route.indexRoute
25 }
26 // if (typeof route.getComponent === 'function') {
27 // const matches = /require\(['"](.+?)['"]\).default/.exec()
28 // delete route.getComponent
29 // }
30 if (typeof route.getComponent === 'function') {
31 route.component = AsyncComponent(() =>
32 route.getComponent.then(module => module.default)
33 )
34 delete route.getComponent
35 }
36
37 if (Array.isArray(route.routes)) {
38 route.routes = route.routes.map(route => convertRoute(route))
39 }
40
41 return route
42}