@@ -12,9 +12,14 @@ import { getChunks } from '@components/layout/menu/chunks';
12
12
import { Global } from './_global' ;
13
13
14
14
class RoutesManager {
15
- constructor ( basicRoutes , dynamicRoutes ) {
16
- this . basicRoutes = basicRoutes ;
17
- this . dynamicRoutes = dynamicRoutes ;
15
+ constructor ( ) {
16
+ let { basicRoutes, layoutRoutes, dynamicRoutes } = process . env . NODE_ENV !== "production"
17
+ ? require ( './routes.dev' )
18
+ : require ( './routes.dist' ) ;
19
+
20
+ this . basicRoutes = basicRoutes || { } ;
21
+ this . layoutRoutes = layoutRoutes || { } ;
22
+ this . dynamicRoutes = dynamicRoutes || { } ;
18
23
19
24
this . router = null ;
20
25
this . config = this . _init ( ) ;
@@ -28,20 +33,18 @@ class RoutesManager {
28
33
* 初始化路由,如果已经登录过,则生成有权限的路由配置文件,给Router
29
34
*/
30
35
_init ( ) {
31
- let routes = cloneDeep ( this . basicRoutes ) ;
32
-
33
- if ( Global . isLoggedIn ( ) ) {
34
- let children = this . getRoutes ( ) ;
35
- let redirect = ( children [ 0 ] || { } ) . path || '/404' ;
36
-
37
- routes . routes . push ( {
38
- path : '/' ,
39
- component : Layout ,
40
- redirect,
41
- children
42
- } ) ;
43
- }
44
- return routes ;
36
+ let config = cloneDeep ( this . basicRoutes ) ;
37
+ let children = Global . isLoggedIn ( ) ? this . getRoutes ( ) : this . getRoutes ( this . layoutRoutes ) ;
38
+ let redirect = ( children [ 0 ] || { } ) . path || '/404' ;
39
+
40
+ config . routes . push ( {
41
+ path : '/' ,
42
+ component : Layout ,
43
+ redirect,
44
+ children
45
+ } ) ;
46
+
47
+ return config ;
45
48
}
46
49
47
50
/**
@@ -65,19 +68,17 @@ class RoutesManager {
65
68
) ;
66
69
}
67
70
68
- getRoutes ( ) {
69
- let dynamicRoutes = cloneDeep ( this . dynamicRoutes ) ;
71
+ getRoutes ( targetRoutes ) {
72
+ targetRoutes = cloneDeep ( targetRoutes || { ...this . layoutRoutes , ...this . dynamicRoutes } ) ;
73
+
70
74
let allRoutes = getChunks ( ) . reduce ( ( pre , cur ) => {
71
- dynamicRoutes [ cur . value ] && pre . push ( ...dynamicRoutes [ cur . value ] ) ;
75
+ targetRoutes [ cur . value ] && pre . push ( ...targetRoutes [ cur . value ] ) ;
72
76
return pre ;
73
77
} , [ ] ) ;
74
78
75
-
76
- let auth = Global . isLoggedIn ( ) ;
77
-
78
79
// 筛选出有权限的路由
79
80
let authRoutes = allRoutes . filter ( ( route ) => {
80
- // return auth[route.auth];
81
+ // return Global. auth[route.auth];
81
82
return true ;
82
83
} ) ;
83
84
@@ -101,21 +102,7 @@ class RoutesManager {
101
102
} ) ;
102
103
}
103
104
104
- // 普通路由
105
- let config = ! route . components
106
- ? route
107
- : {
108
- ...route ,
109
- components : {
110
- default : ( ) => ( {
111
- component : route . components [ 0 ] ( )
112
- } ) ,
113
- left : route . components . includes ( 'left' ) && Left ,
114
- top : route . components . includes ( 'top' ) && Top ,
115
- }
116
- } ;
117
-
118
- pre . push ( config ) ;
105
+ pre . push ( this . rebuildRoute ( route ) ) ;
119
106
return pre ;
120
107
} , [ ] ) ;
121
108
@@ -143,5 +130,20 @@ class RoutesManager {
143
130
144
131
return redirect ;
145
132
}
133
+
134
+ rebuildRoute ( route ) {
135
+ return ! route . components || route . redirect
136
+ ? route
137
+ : {
138
+ ...route ,
139
+ components : {
140
+ default : ( ) => ( {
141
+ component : route . components [ 0 ] ( )
142
+ } ) ,
143
+ left : route . components . includes ( 'left' ) && Left ,
144
+ top : route . components . includes ( 'top' ) && Top ,
145
+ }
146
+ } ;
147
+ }
146
148
}
147
149
export default RoutesManager ;
0 commit comments