我正在使用 Module Federation 和 Relay Modern 试验微前端 (MFE) 架构。我的目标是在允许联合 UI 组件的同时尽量减少 API 调用的数量(Relay 提供的)。
在非联合应用程序中,我可以在根查询中传播片段:
query App_root_Query {
...CartButton_cart_Fragment
...ProductList_products_Fragment
}
CartButton_cart_Fragment
在哪里
fragment CartButton_cart_Fragment on Query {
carts {
itemCount
}
}
通过模块联合,组件被分发到 3 个应用程序:
- Shell:托管导航栏
- Products : 暴露
ProductList
组件 - Cart : 暴露
CartButton
组件
这意味着根查询和片段也是分布式的。现在中继编译器给出错误:
ERROR:
- Unknown fragment 'CartButton_cart_Fragment'.
App.js:3:8
2 | query App_root_Query {
3 | ...CartButton_cart_Fragment
| ^
4 | }
我猜这是因为模块联合在 webpack 中工作,所以中继编译器没有必要的信息来解析片段。
目前,我发现的唯一工作方式是拥有CartButton
并ProductList
进行自己的查询。然而,想象一个有许多联合组件的页面,独立查询的数量有点违背了 Relay 的目的。
所以我想知道是否有人尝试过将 Relay Modern 与 Module Federation 结合使用?目前这(传播联合片段)在技术上可行吗?