@@ -6,19 +6,33 @@ import { getInstance } from '@module-federation/runtime';
6
6
7
7
declare const __APP_VERSION__ : string ;
8
8
9
- export function createBridgeComponent ( bridgeInfo : any ) {
9
+ type AddOptionsFnParams = {
10
+ app : Vue . App < Vue . Component > ;
11
+ basename : RenderFnParams [ 'basename' ] ;
12
+ memoryRoute : RenderFnParams [ 'memoryRoute' ] ;
13
+ [ key : string ] : any ;
14
+ } ;
15
+
16
+ export type ProviderFnParams = {
17
+ rootComponent : Vue . Component ;
18
+ appOptions : (
19
+ params : AddOptionsFnParams ,
20
+ ) => { router ?: VueRouter . Router } | void ;
21
+ } ;
22
+
23
+ export function createBridgeComponent ( bridgeInfo : ProviderFnParams ) {
10
24
const rootMap = new Map ( ) ;
11
25
const instance = getInstance ( ) ;
12
26
return ( ) => {
13
27
return {
14
28
__APP_VERSION__ ,
15
- render ( info : RenderFnParams ) {
29
+ async render ( info : RenderFnParams ) {
16
30
LoggerInstance . log ( `createBridgeComponent render Info` , info ) ;
17
31
const app = Vue . createApp ( bridgeInfo . rootComponent ) ;
18
32
rootMap . set ( info . dom , app ) ;
19
33
20
34
const beforeBridgeRenderRes =
21
- instance ?. bridgeHook ?. lifecycle ?. beforeBridgeRender ?. emit ( info ) || { } ;
35
+ await instance ?. bridgeHook ?. lifecycle ?. beforeBridgeRender ?. emit ( info ) ;
22
36
23
37
const extraProps =
24
38
beforeBridgeRenderRes &&
@@ -27,38 +41,38 @@ export function createBridgeComponent(bridgeInfo: any) {
27
41
? beforeBridgeRenderRes ?. extraProps
28
42
: { } ;
29
43
30
- const appOptions = bridgeInfo . appOptions ( {
44
+ const bridgeOptions = bridgeInfo . appOptions ( {
45
+ app,
31
46
basename : info . basename ,
32
47
memoryRoute : info . memoryRoute ,
33
48
...extraProps ,
34
49
} ) ;
35
50
36
- const history = info . memoryRoute
37
- ? VueRouter . createMemoryHistory ( info . basename )
38
- : VueRouter . createWebHistory ( info . basename ) ;
51
+ if ( bridgeOptions ?. router ) {
52
+ const history = info . memoryRoute
53
+ ? VueRouter . createMemoryHistory ( info . basename )
54
+ : VueRouter . createWebHistory ( info . basename ) ;
39
55
40
- const router = VueRouter . createRouter ( {
41
- ...appOptions . router . options ,
42
- history,
43
- routes : appOptions . router . getRoutes ( ) ,
44
- } ) ;
56
+ const router = VueRouter . createRouter ( {
57
+ ...bridgeOptions . router . options ,
58
+ history,
59
+ routes : bridgeOptions . router . getRoutes ( ) ,
60
+ } ) ;
45
61
46
- LoggerInstance . log ( `createBridgeComponent render router info>>>` , {
47
- name : info . moduleName ,
48
- router,
49
- } ) ;
50
- // memory route Initializes the route
51
- if ( info . memoryRoute ) {
52
- router . push ( info . memoryRoute . entryPath ) . then ( ( ) => {
53
- app . use ( router ) ;
54
- app . mount ( info . dom ) ;
62
+ LoggerInstance . log ( `createBridgeComponent render router info>>>` , {
63
+ name : info . moduleName ,
64
+ router,
55
65
} ) ;
56
- } else {
66
+ // memory route Initializes the route
67
+ if ( info . memoryRoute ) {
68
+ await router . push ( info . memoryRoute . entryPath ) ;
69
+ }
70
+
57
71
app . use ( router ) ;
58
- app . mount ( info . dom ) ;
59
72
}
60
73
61
- instance ?. bridgeHook ?. lifecycle ?. afterBridgeRender ?. emit ( info ) || { } ;
74
+ app . mount ( info . dom ) ;
75
+ instance ?. bridgeHook ?. lifecycle ?. afterBridgeRender ?. emit ( info ) ;
62
76
} ,
63
77
destroy ( info : { dom : HTMLElement } ) {
64
78
LoggerInstance . log ( `createBridgeComponent destroy Info` , info ) ;
0 commit comments