@module-federation/bridge-vue3 0.0.0-next-20241113082541 → 0.0.0-next-20241113115843
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -6
- package/dist/index.cjs.js +10 -10
- package/dist/index.d.ts +1 -14
- package/dist/index.es.js +837 -840
- package/package.json +5 -5
- package/src/provider.ts +8 -31
- package/src/remoteApp.tsx +23 -16
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"url": "https://github.com/module-federation/core",
|
|
8
8
|
"directory": "packages/vue3-bridge"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.0.0-next-
|
|
10
|
+
"version": "0.0.0-next-20241113115843",
|
|
11
11
|
"publishConfig": {
|
|
12
12
|
"access": "public"
|
|
13
13
|
},
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
],
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"vue": "=3",
|
|
32
|
-
"vue-router": "=3"
|
|
33
|
-
"@module-federation/runtime": "0.0.0-next-20241113082541"
|
|
32
|
+
"vue-router": "=3"
|
|
34
33
|
},
|
|
35
34
|
"dependencies": {
|
|
36
|
-
"@module-federation/bridge-shared": "0.0.0-next-
|
|
37
|
-
"@module-federation/sdk": "0.0.0-next-
|
|
35
|
+
"@module-federation/bridge-shared": "0.0.0-next-20241113115843",
|
|
36
|
+
"@module-federation/sdk": "0.0.0-next-20241113115843",
|
|
37
|
+
"@module-federation/runtime": "0.0.0-next-20241113115843"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@vitejs/plugin-vue": "^5.0.4",
|
package/src/provider.ts
CHANGED
|
@@ -2,37 +2,24 @@ import * as Vue from 'vue';
|
|
|
2
2
|
import * as VueRouter from 'vue-router';
|
|
3
3
|
import { RenderFnParams } from '@module-federation/bridge-shared';
|
|
4
4
|
import { LoggerInstance } from './utils';
|
|
5
|
+
import { getInstance } from '@module-federation/runtime';
|
|
5
6
|
|
|
6
7
|
declare const __APP_VERSION__: string;
|
|
7
8
|
|
|
8
|
-
type DestroyParams = {
|
|
9
|
-
dom: HTMLElement;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
type BridgeHooks = {
|
|
13
|
-
beforeBridgeRender?: (params: RenderFnParams) => void | Record<string, any>;
|
|
14
|
-
afterBridgeRender?: (params: RenderFnParams) => void | Record<string, any>;
|
|
15
|
-
beforeBridgeDestroy?: (params: DestroyParams) => void | Record<string, any>;
|
|
16
|
-
afterBridgeDestroy?: (params: DestroyParams) => void | Record<string, any>;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
9
|
export function createBridgeComponent(bridgeInfo: any) {
|
|
20
10
|
const rootMap = new Map();
|
|
21
|
-
|
|
11
|
+
const instance = getInstance();
|
|
12
|
+
return () => {
|
|
22
13
|
return {
|
|
23
14
|
__APP_VERSION__,
|
|
24
15
|
render(info: RenderFnParams) {
|
|
25
16
|
LoggerInstance.log(`createBridgeComponent render Info`, info);
|
|
26
17
|
const app = Vue.createApp(bridgeInfo.rootComponent);
|
|
27
18
|
rootMap.set(info.dom, app);
|
|
28
|
-
// bridgeInfo?.renderLifecycle?.(info);
|
|
29
|
-
const beforeBridgeRender =
|
|
30
|
-
(bridgeInfo?.hooks && bridgeInfo?.hooks.beforeBridgeRender) ||
|
|
31
|
-
params?.hooks?.beforeBridgeRender;
|
|
32
19
|
|
|
33
|
-
// you can return a props object through beforeBridgeRender to pass additional props parameters
|
|
34
20
|
const beforeBridgeRenderRes =
|
|
35
|
-
beforeBridgeRender
|
|
21
|
+
instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info) || {};
|
|
22
|
+
|
|
36
23
|
const extraProps =
|
|
37
24
|
beforeBridgeRenderRes &&
|
|
38
25
|
typeof beforeBridgeRenderRes === 'object' &&
|
|
@@ -71,25 +58,15 @@ export function createBridgeComponent(bridgeInfo: any) {
|
|
|
71
58
|
app.mount(info.dom);
|
|
72
59
|
}
|
|
73
60
|
|
|
74
|
-
|
|
75
|
-
(bridgeInfo?.hooks && bridgeInfo?.hooks.afterBridgeDestroy) ||
|
|
76
|
-
params?.hooks?.afterBridgeRender;
|
|
77
|
-
afterBridgeRender && afterBridgeRender(info);
|
|
61
|
+
instance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(info) || {};
|
|
78
62
|
},
|
|
79
63
|
destroy(info: { dom: HTMLElement }) {
|
|
80
64
|
LoggerInstance.log(`createBridgeComponent destroy Info`, info);
|
|
81
65
|
const root = rootMap.get(info?.dom);
|
|
82
66
|
|
|
83
|
-
|
|
84
|
-
(bridgeInfo?.hooks && bridgeInfo?.hooks.beforeBridgeDestroy) ||
|
|
85
|
-
params?.hooks?.beforeBridgeDestroy;
|
|
86
|
-
beforeBridgeDestroy && beforeBridgeDestroy(info);
|
|
87
|
-
|
|
67
|
+
instance?.bridgeHook?.lifecycle?.beforeBridgeDestroy?.emit(info);
|
|
88
68
|
root?.unmount();
|
|
89
|
-
|
|
90
|
-
(bridgeInfo?.hooks && bridgeInfo?.hooks.afterBridgeDestroy) ||
|
|
91
|
-
params?.hooks?.afterBridgeDestroy;
|
|
92
|
-
afterBridgeDestroy && afterBridgeDestroy(info);
|
|
69
|
+
instance?.bridgeHook?.lifecycle?.afterBridgeDestroy?.emit(info);
|
|
93
70
|
},
|
|
94
71
|
};
|
|
95
72
|
};
|
package/src/remoteApp.tsx
CHANGED
|
@@ -17,12 +17,13 @@ export default defineComponent({
|
|
|
17
17
|
const providerInfoRef = ref(null);
|
|
18
18
|
const pathname = ref('');
|
|
19
19
|
const route = useRoute();
|
|
20
|
+
const hostInstance = getInstance();
|
|
20
21
|
|
|
21
22
|
const renderComponent = () => {
|
|
22
|
-
const host = getInstance();
|
|
23
23
|
const providerReturn = props.providerInfo?.();
|
|
24
24
|
providerInfoRef.value = providerReturn;
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
let renderProps = {
|
|
26
27
|
name: props.moduleName,
|
|
27
28
|
dom: rootRef.value,
|
|
28
29
|
basename: props.basename,
|
|
@@ -33,12 +34,14 @@ export default defineComponent({
|
|
|
33
34
|
renderProps,
|
|
34
35
|
);
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
37
|
+
const beforeBridgeRenderRes =
|
|
38
|
+
hostInstance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(
|
|
39
|
+
renderProps,
|
|
40
|
+
) || {};
|
|
41
|
+
|
|
42
|
+
renderProps = { ...renderProps, ...beforeBridgeRenderRes.extraProps };
|
|
41
43
|
providerReturn.render(renderProps);
|
|
44
|
+
hostInstance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(renderProps);
|
|
42
45
|
};
|
|
43
46
|
|
|
44
47
|
const watchStopHandle = watch(
|
|
@@ -65,21 +68,25 @@ export default defineComponent({
|
|
|
65
68
|
});
|
|
66
69
|
|
|
67
70
|
onBeforeUnmount(() => {
|
|
68
|
-
const host = getInstance();
|
|
69
71
|
LoggerInstance.log(`createRemoteComponent LazyComponent destroy >>>`, {
|
|
70
72
|
...props,
|
|
71
73
|
});
|
|
72
74
|
watchStopHandle();
|
|
73
75
|
|
|
76
|
+
hostInstance?.bridgeHook?.lifecycle?.beforeBridgeDestroy?.emit({
|
|
77
|
+
name: props.moduleName,
|
|
78
|
+
dom: rootRef.value,
|
|
79
|
+
basename: props.basename,
|
|
80
|
+
memoryRoute: props.memoryRoute,
|
|
81
|
+
});
|
|
82
|
+
|
|
74
83
|
(providerInfoRef.value as any)?.destroy({ dom: rootRef.value });
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
});
|
|
82
|
-
}
|
|
84
|
+
hostInstance?.bridgeHook?.lifecycle?.afterBridgeDestroy?.emit({
|
|
85
|
+
name: props.moduleName,
|
|
86
|
+
dom: rootRef.value,
|
|
87
|
+
basename: props.basename,
|
|
88
|
+
memoryRoute: props.memoryRoute,
|
|
89
|
+
});
|
|
83
90
|
});
|
|
84
91
|
|
|
85
92
|
return () => <div ref={rootRef}></div>;
|