我找不到足够好的答案,因此我正在创建一个新问题,其中包含我要存档的内容的详细信息。
我有一个 React 组件,它将嵌入到其他页面中。
这个 React 组件(现在我将其称为 Host Component)需要在运行时动态加载远程组件。本质上,它调用一个 API,在答案中会有一个 CDN 的 URL,它需要渲染的组件位于该 URL。我也是这些组件的所有者,我将其称为“远程组件”。 这些组件是否需要是 IIFE、UMD、CJS 或 ESM 对我来说并不重要。
到目前为止我做了什么
我尝试使用 React 的延迟导入并将我的远程组件构建为 ESM。问题是构建的捆绑文件包含无法在运行时解析的
React导入。然后我转移到 UMD 并开始通过使用 UMD Remote Component 的路径创建脚本标记来动态导入它。现在它抱怨“它无法读取 null 的属性(读取 useState)”。 GPT 建议发生这种情况是因为 Remote Component 和 Host Application 使用不同的 React 实例。这是有道理的,因为如果我手动编辑捆绑包以替换对 Host Application 和 Remote Component 上的 window.react 的反应调用,它就可以正常工作。 所以我想听听你对此的看法。这种方法有意义吗?
我读到了模块联合(微前端架构),它对我来说确实有意义。但我试图归档的内容与它建议的内容略有不同。模块联合使用一个服务器来配置它期望导出/导入的模块的区域。我没有这样的东西,因为模块将由另一个应用程序管理。
谢谢大家!
编辑我在 Reactjs Reddit 上创建了一个更详细的问题:
https://www.reddit.com/r/reactjs/comments/1d9j292/import_remote_esm_module_react_component_from_a/文件,并使用 next-mdx-remote 库从远程源(作为字符串)加载它们。