我们有一个主要的大应用程序,并将使用不同的库(Angular,React等)创建单独的小应用程序(微服务)并将它们编译成web组件以在任何地方使用它们。主应用程序有一些库(例如underscore.js),我们的一些组件使用相同的库(例如lodash.js),在这种情况下,我们在主应用程序中使用webcomponents时会看到很多冲突。您对如何隔离web组件库以及它们可以在隔离模式下工作有什么想法吗?我们也使用了ShadowDOM,但没有运气。
答案 0 :(得分:2)
Web Components 技术附带此隔离模式。所有导入的库都将共享相同的命名空间。
Shadow DOM 不是关于Javascript代码隔离,而是仅处理DOM和CSS隔离。
如果您想解决与导入的第三方库的冲突,您可以:
将您的网站设计为仅在全局依赖关系脚本中导入第三方导入。
使用可以为您管理库加载的模块加载器,例如 require.js ,或内置功能ES6模块import
功能,甚至是您自己的香草模块装载机。
使用<iframe>
元素隔离您网站的不同部分(如果可能,但您可能会忽略某些互动功能)。
所有这些解决方案都有优点和缺点。这取决于你的需求。