Skip to content

Commit 677aac9

Browse files
timdamendanpeen
andauthored
Vue.js hash router option vue-3-bridge (module-federation#3722)
Co-authored-by: CocooDanielle <dapeen.feng@gmail.com>
1 parent 231e443 commit 677aac9

File tree

4 files changed

+37
-6
lines changed

4 files changed

+37
-6
lines changed

.changeset/swift-kiwis-argue.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@module-federation/bridge-shared': patch
3+
'@module-federation/bridge-vue3': patch
4+
---
5+
6+
vue.js has router option added to the vue3-bridge

packages/bridge/bridge-shared/src/type.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export interface ProviderParams {
22
moduleName?: string;
33
basename?: string;
44
memoryRoute?: { entryPath: string };
5+
hashRoute?: boolean;
56
style?: React.CSSProperties;
67
className?: string;
78
}

packages/bridge/vue3-bridge/src/provider.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) {
2828
__APP_VERSION__,
2929
async render(info: RenderFnParams) {
3030
LoggerInstance.debug(`createBridgeComponent render Info`, info);
31-
const { moduleName, dom, basename, memoryRoute, ...propsInfo } = info;
31+
const {
32+
moduleName,
33+
dom,
34+
basename,
35+
memoryRoute,
36+
hashRoute,
37+
...propsInfo
38+
} = info;
3239
const app = Vue.createApp(bridgeInfo.rootComponent, propsInfo);
3340
rootMap.set(dom, app);
3441

@@ -46,19 +53,32 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) {
4653
app,
4754
basename,
4855
memoryRoute,
56+
hashRoute,
4957
...propsInfo,
5058
...extraProps,
5159
});
52-
5360
if (bridgeOptions?.router) {
54-
const history = info.memoryRoute
55-
? VueRouter.createMemoryHistory(info.basename)
56-
: VueRouter.createWebHistory(info.basename);
61+
let history;
62+
let routes = bridgeOptions.router.getRoutes();
63+
64+
if (info.memoryRoute) {
65+
history = VueRouter.createMemoryHistory(info.basename);
66+
} else if (info.hashRoute) {
67+
history = VueRouter.createWebHashHistory();
68+
routes = routes.map((route) => {
69+
return {
70+
...route,
71+
path: info.basename + route.path,
72+
};
73+
});
74+
} else {
75+
history = VueRouter.createWebHistory(info.basename);
76+
}
5777

5878
const router = VueRouter.createRouter({
5979
...bridgeOptions.router.options,
6080
history,
61-
routes: bridgeOptions.router.getRoutes(),
81+
routes,
6282
});
6383

6484
LoggerInstance.debug(`createBridgeComponent render router info>>>`, {

packages/bridge/vue3-bridge/src/remoteApp.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export default defineComponent({
1717
moduleName: String,
1818
basename: String,
1919
memoryRoute: Object,
20+
hashRoute: Boolean,
2021
providerInfo: Function,
2122
rootAttrs: Object,
2223
},
@@ -39,6 +40,7 @@ export default defineComponent({
3940
dom: rootRef.value,
4041
basename: props.basename,
4142
memoryRoute: props.memoryRoute,
43+
hashRoute: props.hashRoute,
4244
};
4345
LoggerInstance.debug(
4446
`createRemoteComponent LazyComponent render >>>`,
@@ -92,6 +94,7 @@ export default defineComponent({
9294
dom: rootRef.value,
9395
basename: props.basename,
9496
memoryRoute: props.memoryRoute,
97+
hashRoute: props.hashRoute,
9598
});
9699

97100
(providerInfoRef.value as any)?.destroy({ dom: rootRef.value });
@@ -100,6 +103,7 @@ export default defineComponent({
100103
dom: rootRef.value,
101104
basename: props.basename,
102105
memoryRoute: props.memoryRoute,
106+
hashRoute: props.hashRoute,
103107
});
104108
});
105109

0 commit comments

Comments
 (0)