@fulgurjs/federation 5.2.4 → 5.3.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 +18 -0
- package/DESIGN.md +7 -0
- package/README.en.md +86 -4
- package/README.md +125 -3
- package/dist/bridge-app-react.cjs +185 -0
- package/dist/bridge-app-react.d.cts +37 -0
- package/dist/bridge-app-react.d.ts +37 -0
- package/dist/bridge-app-react.js +115 -0
- package/dist/bridge-app-vue.cjs +111 -0
- package/dist/bridge-app-vue.d.cts +34 -0
- package/dist/bridge-app-vue.d.ts +34 -0
- package/dist/bridge-app-vue.js +51 -0
- package/dist/bridge-core-6uLJiMVa.d.ts +42 -0
- package/dist/bridge-core.cjs +224 -0
- package/dist/bridge-core.d.cts +51 -0
- package/dist/bridge-core.d.ts +51 -0
- package/dist/bridge-core.js +21 -0
- package/dist/bridge-errors.cjs +114 -0
- package/dist/bridge-errors.d.cts +36 -0
- package/dist/bridge-errors.d.ts +36 -0
- package/dist/bridge-errors.js +15 -0
- package/dist/bridge-host-react-C55RmGll.d.ts +35 -0
- package/dist/bridge-host-react.cjs +392 -0
- package/dist/bridge-host-react.d.cts +45 -0
- package/dist/bridge-host-react.d.ts +45 -0
- package/dist/bridge-host-react.js +183 -0
- package/dist/bridge-host-vue-BAxDKqGH.d.ts +32 -0
- package/dist/bridge-host-vue.cjs +426 -0
- package/dist/bridge-host-vue.d.cts +39 -0
- package/dist/bridge-host-vue.d.ts +39 -0
- package/dist/bridge-host-vue.js +211 -0
- package/dist/bridge-react.d.ts +12 -0
- package/dist/bridge-react.js +3 -0
- package/dist/bridge-vue.d.ts +8 -0
- package/dist/bridge-vue.js +3 -0
- package/dist/bridge.d.ts +16 -0
- package/dist/bridge.js +5 -0
- package/dist/chunk-E55P4TIY.js +76 -0
- package/dist/chunk-EH34L46P.js +207 -0
- package/dist/chunk-FVYGSLAQ.js +179 -0
- package/dist/chunk-LWJBHUJQ.js +114 -0
- package/dist/chunk-OF2JCXTZ.js +15 -0
- package/dist/chunk-TSYLDY6H.js +64 -0
- package/dist/chunk-UJFCPQGN.js +1210 -0
- package/dist/context.js +8 -64
- package/dist/index.cjs +84 -8
- package/dist/index.js +84 -8
- package/dist/react.d.ts +44 -2
- package/dist/react.js +2 -0
- package/dist/runtime-entry.d.ts +41 -2
- package/dist/runtime-entry.js +1 -1
- package/dist/runtime.js +1 -1
- package/dist/vue.js +2 -0
- package/docs/webpack-mf-/345/257/271/347/205/247/344/270/216/347/274/272/345/217/243.md +1 -1
- package/docs//350/277/201/347/247/273/346/214/207/345/215/227.md +1 -1
- package/examples/README.en.md +20 -0
- package/examples/README.md +20 -0
- package/examples/bridge/README.md +36 -0
- package/examples/bridge/react-host/README.md +23 -0
- package/examples/bridge/react-host/fulgurjs.config.ts +20 -0
- package/examples/bridge/react-host/index.html +11 -0
- package/examples/bridge/react-host/package-lock.json +2457 -0
- package/examples/bridge/react-host/package.json +24 -0
- package/examples/bridge/react-host/src/env.d.ts +7 -0
- package/examples/bridge/react-host/src/host-session.ts +26 -0
- package/examples/bridge/react-host/src/main.tsx +62 -0
- package/examples/bridge/react-host/tsconfig.json +13 -0
- package/examples/bridge/react-host/vite.config.ts +9 -0
- package/examples/bridge/react-remote/README.md +20 -0
- package/examples/bridge/react-remote/fulgurjs.config.ts +17 -0
- package/examples/bridge/react-remote/index.html +11 -0
- package/examples/bridge/react-remote/package-lock.json +2382 -0
- package/examples/bridge/react-remote/package.json +24 -0
- package/examples/bridge/react-remote/src/bridge.tsx +66 -0
- package/examples/bridge/react-remote/src/env.d.ts +7 -0
- package/examples/bridge/react-remote/src/main.tsx +7 -0
- package/examples/bridge/react-remote/tsconfig.json +13 -0
- package/examples/bridge/react-remote/vite.config.ts +9 -0
- package/examples/bridge/vue-host/README.md +24 -0
- package/examples/bridge/vue-host/fulgurjs.config.ts +22 -0
- package/examples/bridge/vue-host/index.html +11 -0
- package/examples/bridge/vue-host/package-lock.json +1885 -0
- package/examples/bridge/vue-host/package.json +24 -0
- package/examples/bridge/vue-host/src/App.vue +70 -0
- package/examples/bridge/vue-host/src/env.d.ts +7 -0
- package/examples/bridge/vue-host/src/host-session.ts +29 -0
- package/examples/bridge/vue-host/src/main.ts +4 -0
- package/examples/bridge/vue-host/tsconfig.json +13 -0
- package/examples/bridge/vue-host/vite.config.ts +9 -0
- package/examples/bridge/vue-remote/README.md +19 -0
- package/examples/bridge/vue-remote/fulgurjs.config.ts +16 -0
- package/examples/bridge/vue-remote/index.html +11 -0
- package/examples/bridge/vue-remote/package-lock.json +1856 -0
- package/examples/bridge/vue-remote/package.json +21 -0
- package/examples/bridge/vue-remote/src/App.vue +12 -0
- package/examples/bridge/vue-remote/src/bridge.ts +57 -0
- package/examples/bridge/vue-remote/src/env.d.ts +7 -0
- package/examples/bridge/vue-remote/src/main.ts +15 -0
- package/examples/bridge/vue-remote/tsconfig.json +13 -0
- package/examples/bridge/vue-remote/vite.config.ts +9 -0
- package/examples/react/host/package-lock.json +3 -3
- package/examples/react/host/package.json +1 -1
- package/examples/react/remote/package-lock.json +3 -3
- package/examples/react/remote/package.json +1 -1
- package/examples/react/remote/vite.config.ts +3 -2
- package/examples/vue/README.md +1 -1
- package/examples/vue/host/package-lock.json +3 -3
- package/examples/vue/host/package.json +1 -1
- package/examples/vue/remote/README.md +1 -1
- package/examples/vue/remote/package-lock.json +3 -3
- package/examples/vue/remote/package.json +1 -1
- package/examples/vue/remote/vite.config.ts +3 -2
- package/package.json +43 -2
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 跨框架桥接示例(/bridge)
|
|
2
|
+
|
|
3
|
+
双向「子应用级跨框架嵌入」的最小可运行组合(README §8.2):
|
|
4
|
+
|
|
5
|
+
| 组合 | 宿主 | 子应用 | 端口 |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| Vue 宿主 × React 子应用 | [vue-host](./vue-host)(5314) | [react-remote](./react-remote)(5303) | 先起 5303 |
|
|
8
|
+
| React 宿主 × Vue 子应用 | [react-host](./react-host)(5304) | [vue-remote](./vue-remote)(5313) | 先起 5313 |
|
|
9
|
+
|
|
10
|
+
四个工程互相独立:`npm install` 即用 registry 正式包;宿主同时安装两套框架并全部 singleton(桥接使用合同),子应用只装自己的框架。
|
|
11
|
+
|
|
12
|
+
## 快速开始(Vue 宿主 × React 子应用)
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
cd react-remote && npm install && npm run dev # 终端 1:http://localhost:5303
|
|
16
|
+
cd ../vue-host && npm install && npm run dev # 终端 2:http://localhost:5314
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
打开 5314:点击「切换到 Bob / 登出」体验受控会话(卸载→清 context→新代次重挂);子应用内部按钮操作其 memory 路由与本地状态。
|
|
20
|
+
|
|
21
|
+
## 快速开始(React 宿主 × Vue 子应用)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
cd vue-remote && npm install && npm run dev # 终端 1:http://localhost:5313
|
|
25
|
+
cd ../react-host && npm install && npm run dev # 终端 2:http://localhost:5304
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 生产构建与部署
|
|
29
|
+
|
|
30
|
+
每个示例 `npm run build` 产出各自子路径(`/bridge-vue-host/` 等)。部署时保持「子应用子路径 + 宿主子路径」并列,宿主 fulgurjs 配置的 `prod` 指向子应用子路径(已是根相对写法)。NGINX 需对各 `fulgurjs-remoteEntry.js`/`fulgurjs-manifest.json`/`index.html` 设置 no-cache,其余静态资源可长缓存。
|
|
31
|
+
|
|
32
|
+
## 范围声明(v1)
|
|
33
|
+
|
|
34
|
+
- 只做子应用级挂载/卸载;组件级混渲染(Vue 里直接渲染 React 组件)不支持。
|
|
35
|
+
- 子应用用 memory 路由,不与宿主 URL 同步。
|
|
36
|
+
- 无 JS 沙箱与 CSS 隔离:远程全局样式/body 级副作用会影响宿主,需自行命名空间治理。
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# bridge-react-host — React 宿主 × Vue 桥接子应用示例
|
|
2
|
+
|
|
3
|
+
`@fulgurjs/federation` 跨框架桥接的 **React 18/19 宿主**侧示例:用 `createReactBridgeApp`(`@fulgurjs/federation/bridge/react`)把 `bridge-vue-remote/bridge` 作为受控组件挂载(入口跑在 StrictMode 下,双 effect 安全由契约保证)。
|
|
4
|
+
|
|
5
|
+
## 运行
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 1) 先启动 Vue 子应用(5313)
|
|
9
|
+
cd ../vue-remote && npm install && npm run dev
|
|
10
|
+
|
|
11
|
+
# 2) 再启动本宿主(5304)
|
|
12
|
+
npm install
|
|
13
|
+
npm run dev # http://localhost:5304
|
|
14
|
+
npm run build # 产出 /bridge-react-host/ 子路径产物
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 关键点(对应 README §8.2)
|
|
18
|
+
|
|
19
|
+
- **双框架安装合同**:本宿主同时安装 `react` + `react-dom` + `vue`,shared 三键全部 `singleton: true`。
|
|
20
|
+
- **入口选择**:`@fulgurjs/federation/bridge/react` 只携带 React 宿主适配器(零 Vue)。
|
|
21
|
+
- **工厂选项**:`fallback`(加载中占位)、`error`(节点或 `(error, retry) => ReactNode`)、`retries`、`timeout`、`getContext`(同步纯 getter)。
|
|
22
|
+
- **换账号/登出**:受控 `sessionKey` 置 `null` → 等卸载 → `clearAppContext()` → 登录新账号 → 更新受控 prop。
|
|
23
|
+
- 子应用首次根提交前发生错误 → MFU-016(phase: mount)占位;首次提交后子应用内部错误由子应用自己的错误边界负责(跨 root 不冒泡)。
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { FederationOptions } from '@fulgurjs/federation'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* React 桥接宿主联邦配置(双框架安装合同 + 全 singleton,见 vue-host 同款说明)。
|
|
5
|
+
* 推荐入口:/bridge/react(只携带 React 宿主适配器)。
|
|
6
|
+
*/
|
|
7
|
+
export default {
|
|
8
|
+
name: 'bridge-react-host',
|
|
9
|
+
remotes: {
|
|
10
|
+
'bridge-vue-remote': {
|
|
11
|
+
dev: 'http://localhost:5313',
|
|
12
|
+
prod: '/bridge-vue-remote',
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
shared: {
|
|
16
|
+
react: { singleton: true },
|
|
17
|
+
'react-dom': { singleton: true },
|
|
18
|
+
vue: { singleton: true },
|
|
19
|
+
},
|
|
20
|
+
} satisfies FederationOptions
|