如何跨 Web 组件共享库

How to share libraries across web components

我已经利用自定义元素启动了一个微前端项目。 我正在寻找一种在应用程序的所有部分之间共享依赖关系的方法。

我想知道如何使用 Material-ui 库来做到这一点。 例如,可以将库附加到 window 对象并从自定义元素(Web 组件)内部访问它。

我在这里看到的问题是 material-ui 作为 npm 模块存在,我还没有找到通过 [=10 加载它的选项=] 标签。

自定义元素通过 http import 这意味着它们将在 window 对象被 material-ui 库填充之前加载。

我找到了一种共享库的方法,例如 UI 库,例如 Material-UI,那就是将它们放在全局范围内(window 对象)。

然后被包含在合成层中的 web component (custom element) 可以从从包含它的上下文继承的 window 对象中读取它。

在只需要功能的情况下,可以轻松使用此方法。如果是UI库,也有style,需要注意web组件上的shadow dom是否开启,开启关闭。

原因是 Web 组件的影子 dom 样式范围界定功能,这意味着可以简单地从父项继承样式。

这是我去年制作的一个快速示例,现在我又让它工作了:) github.com/mnemanja/web-components-composition