@module-federation/bridge-vue3 0.9.0 → 0.10.0
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 +28 -0
- package/dist/index.cjs.js +5 -10
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +917 -1096
- package/package.json +4 -4
- package/src/create.ts +3 -1
- package/src/provider.ts +6 -6
- package/src/remoteApp.tsx +17 -6
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.
|
|
10
|
+
"version": "0.10.0",
|
|
11
11
|
"publishConfig": {
|
|
12
12
|
"access": "public"
|
|
13
13
|
},
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"vue-router": "=3"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@module-federation/bridge-shared": "0.
|
|
36
|
-
"@module-federation/sdk": "0.
|
|
37
|
-
"@module-federation/runtime": "0.
|
|
35
|
+
"@module-federation/bridge-shared": "0.10.0",
|
|
36
|
+
"@module-federation/sdk": "0.10.0",
|
|
37
|
+
"@module-federation/runtime": "0.10.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@vitejs/plugin-vue": "^5.0.4",
|
package/src/create.ts
CHANGED
|
@@ -9,6 +9,7 @@ export function createRemoteComponent(info: {
|
|
|
9
9
|
loader: () => Promise<any>;
|
|
10
10
|
export?: string;
|
|
11
11
|
asyncComponentOptions?: Omit<AsyncComponentOptions, 'loader'>;
|
|
12
|
+
rootAttrs?: Record<string, unknown>;
|
|
12
13
|
}) {
|
|
13
14
|
return defineAsyncComponent({
|
|
14
15
|
__APP_VERSION__,
|
|
@@ -39,7 +40,7 @@ export function createRemoteComponent(info: {
|
|
|
39
40
|
|
|
40
41
|
LoggerInstance.debug(
|
|
41
42
|
`createRemoteComponent LazyComponent loadRemote info >>>`,
|
|
42
|
-
{
|
|
43
|
+
{ moduleName, module, exportName, basename, route },
|
|
43
44
|
);
|
|
44
45
|
|
|
45
46
|
if (exportName in module && typeof exportFn === 'function') {
|
|
@@ -49,6 +50,7 @@ export function createRemoteComponent(info: {
|
|
|
49
50
|
moduleName,
|
|
50
51
|
providerInfo: exportFn,
|
|
51
52
|
basename,
|
|
53
|
+
rootAttrs: info.rootAttrs,
|
|
52
54
|
});
|
|
53
55
|
},
|
|
54
56
|
};
|
package/src/provider.ts
CHANGED
|
@@ -30,7 +30,7 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) {
|
|
|
30
30
|
LoggerInstance.debug(`createBridgeComponent render Info`, info);
|
|
31
31
|
const { moduleName, dom, basename, memoryRoute, ...propsInfo } = info;
|
|
32
32
|
const app = Vue.createApp(bridgeInfo.rootComponent, propsInfo);
|
|
33
|
-
rootMap.set(
|
|
33
|
+
rootMap.set(dom, app);
|
|
34
34
|
|
|
35
35
|
const beforeBridgeRenderRes =
|
|
36
36
|
await instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info);
|
|
@@ -61,19 +61,19 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) {
|
|
|
61
61
|
routes: bridgeOptions.router.getRoutes(),
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
-
LoggerInstance.
|
|
65
|
-
|
|
64
|
+
LoggerInstance.debug(`createBridgeComponent render router info>>>`, {
|
|
65
|
+
moduleName,
|
|
66
66
|
router,
|
|
67
67
|
});
|
|
68
68
|
// memory route Initializes the route
|
|
69
|
-
if (
|
|
70
|
-
await router.push(
|
|
69
|
+
if (memoryRoute) {
|
|
70
|
+
await router.push(memoryRoute.entryPath);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
app.use(router);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
app.mount(
|
|
76
|
+
app.mount(dom);
|
|
77
77
|
instance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(info);
|
|
78
78
|
},
|
|
79
79
|
destroy(info: { dom: HTMLElement }) {
|
package/src/remoteApp.tsx
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
onMounted,
|
|
4
|
+
onBeforeUnmount,
|
|
5
|
+
watch,
|
|
6
|
+
defineComponent,
|
|
7
|
+
useAttrs,
|
|
8
|
+
} from 'vue';
|
|
2
9
|
import { dispatchPopstateEnv } from '@module-federation/bridge-shared';
|
|
3
10
|
import { useRoute } from 'vue-router';
|
|
4
11
|
import { LoggerInstance } from './utils';
|
|
@@ -11,20 +18,24 @@ export default defineComponent({
|
|
|
11
18
|
basename: String,
|
|
12
19
|
memoryRoute: Object,
|
|
13
20
|
providerInfo: Function,
|
|
21
|
+
rootAttrs: Object,
|
|
14
22
|
},
|
|
23
|
+
inheritAttrs: false,
|
|
15
24
|
setup(props) {
|
|
16
25
|
const rootRef = ref(null);
|
|
17
26
|
const providerInfoRef = ref(null);
|
|
18
27
|
const pathname = ref('');
|
|
19
28
|
const route = useRoute();
|
|
20
29
|
const hostInstance = getInstance();
|
|
30
|
+
const componentAttrs = useAttrs();
|
|
21
31
|
|
|
22
|
-
const renderComponent = () => {
|
|
32
|
+
const renderComponent = async () => {
|
|
23
33
|
const providerReturn = props.providerInfo?.();
|
|
24
34
|
providerInfoRef.value = providerReturn;
|
|
25
35
|
|
|
26
36
|
let renderProps = {
|
|
27
|
-
|
|
37
|
+
...componentAttrs,
|
|
38
|
+
moduleName: props.moduleName,
|
|
28
39
|
dom: rootRef.value,
|
|
29
40
|
basename: props.basename,
|
|
30
41
|
memoryRoute: props.memoryRoute,
|
|
@@ -35,9 +46,9 @@ export default defineComponent({
|
|
|
35
46
|
);
|
|
36
47
|
|
|
37
48
|
const beforeBridgeRenderRes =
|
|
38
|
-
hostInstance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(
|
|
49
|
+
(await hostInstance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(
|
|
39
50
|
renderProps,
|
|
40
|
-
) || {};
|
|
51
|
+
)) || {};
|
|
41
52
|
|
|
42
53
|
renderProps = { ...renderProps, ...beforeBridgeRenderRes.extraProps };
|
|
43
54
|
providerReturn.render(renderProps);
|
|
@@ -92,6 +103,6 @@ export default defineComponent({
|
|
|
92
103
|
});
|
|
93
104
|
});
|
|
94
105
|
|
|
95
|
-
return () => <div ref={rootRef}></div>;
|
|
106
|
+
return () => <div {...(props.rootAttrs || {})} ref={rootRef}></div>;
|
|
96
107
|
},
|
|
97
108
|
});
|