reactjs - 在没有 CDN 的微前端包之间共享 react

标签 reactjs webpack micro-frontend single-spa

我正在使用带有 Single-Spa 框架的微前端架构构建一个应用。

我有:

  • 根配置 Web 应用:定义应用的布局并将每个微前端作为 NPM 依赖项包含在内
  • N 微前端:加载到根配置应用程序中的 React 应用程序。

因为每个微前端都在使用 React,所以我不想每次都捆绑它。相反,我想让根配置应用程序将 React 指定为依赖项,然后它可以由每个微前端加载。

我已经将 react 和 react-dom 声明为 webpack 外部组件,因此它们没有捆绑在一起,但我认为这只有在我将来自 CDN 的 React 包含在根配置应用程序的 index.html 中时才有效。有没有办法配置 webpack 以便它将 React 包含在根配置中并使其可用于每个微前端?我不能在我的公司使用公共(public) CDN。

谢谢!

最佳答案

"Getting Started: Quick start" guide ,我们介绍了如何添加共享依赖项,该示例具体显示了将 React 和 ReactDOM 添加到导入映射中。

您不应该尝试将 React 捆绑到根配置中,因为通过 Webpack 捆绑到应用程序中的模块是命名空间的,而不是全局共享的。相反,根据您的要求,您可以将这些 React 文件托管在您自己的 CDN 中,甚至可以通过 root-config 在本地提供它们,因为最终会有静态文件。这些文件的加载位置与 SystemJS 无关,只要它可以加载它们即可。这意味着您可以像在本地复制这些文件并从根配置服务器提供它们一样简单,也可以像 setting up your own unpkg server 一样复杂。 .

关于reactjs - 在没有 CDN 的微前端包之间共享 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66137561/

相关文章:

javascript - 使用 react-chartjs-2 创建对折线图的引用

arrays - 如何在 react 中的对象数组内设置对象数组的状态

webpack - 将 Webpack 入口点之一导出为库

javascript - 如何在拼接层中重用微前端定义的 Web 组件?

javascript - 在 React 中使用 setInterval 延迟组件渲染

javascript - React - 当从 API 获取数据时,this.state 在 render 中为 null

javascript - Webpack require/import 在客户端上延迟执行,而不是在服务器上执行

javascript - Grunt/Webpack/Babel 中的路径错误

Vue.JS 用于微前端方法