所以我正在努力将我公司的应用程序迁移到微前端方法。我们遵循https://micro-frontends.org/中描述的标准。虽然目前一切都在使用 React,但我们正在使用 Web Components 进行包装,以便我们在未来拥有与框架无关的自由和灵活性。我们已经建立并运行了一个工作架构,到目前为止它运行良好。我们甚至在 Web 组件规范之上创建了一个花哨的兼容性层,它允许我们将类似 React 的 props 传递给 Web 组件,包括对象、数组甚至函数。这允许它们之间更好的交互。
我们现在主要关心的是库的重复。我们是一家 React 商店,所以即使我们有这种与框架无关的方法,一切都在使用 React。虽然这种新方法使我们能够将应用程序的各个部分单独升级到更新的 React 版本(最终),但我们仍然不喜欢 React 库的如此多重复的想法。
换个角度来看,即使是 Gzipped,React/ReactDOM 也超过 40kb。单独来说这是非常小的,但按比例放大它开始占用越来越多的带宽。RAM 方面问题不大,这些库大约 130kb,鉴于现在大多数设备的 RAM 容量,这并不是什么大问题。
但是,当然,我们希望事情尽可能优化和简化。所以我希望有人可以为微前端应用程序(包装在 Web 组件中的应用程序)提出一种方法,以便从父应用程序中获取 React 和其他库。
您应该知道父应用 JavaScript 在微前端之前加载。每个微前端都通过<script>
标签加载。最后,我们目前没有使用 Shadow DOM,这是我们为了将现有代码迁移到新的微前端架构而做出的权衡。