如何在未知环境中安全加载 Polymer - 多个版本或命名空间?

Posted

技术标签:

【中文标题】如何在未知环境中安全加载 Polymer - 多个版本或命名空间?【英文标题】:How to safely load Polymer in unknown environment - multiple versions or namespace? 【发布时间】:2015-10-09 23:10:48 【问题描述】:

我有使用 Polymer 构建的元素,需要在多个站点(一个小部件)上运行:

不包含 Polymer(很好,我可以包含) 聚合物已包含在兼容版本中(很棒,不太可能) 未知版本的聚合物(太旧或太新,棘手

是否可以在命名空间中加载 Polymer?例如myObj.PolymerMyPolymerName

我找到了polymer-js,它可以让我将 Polymer 作为模块加载,但这不是官方方式。 这仍然导出到全局范围

【问题讨论】:

我想好的旧框架是不可能的吧?我看到聚合物文档使用 iframe 来隔离他们的演示。 无法在命名空间中加载 Polymer。 Polymer's 在他们的网站上尝试使用各种 hack 混合 0.5 和 1.0 元素,但发现它太笨拙了。这个话题仍然是一个研究领域。 @AleksandarTotic 谢谢,该死的,我希望这会改变。将继续我自己的研究。如果有人找到方法,请在此处发布! @AdamHeath 您找到解决方案了吗?我现在面临同样的问题?呃 @dipole_moment 不,抱歉。暂时不使用 Polymer 【参考方案1】:

目前的解决方案是依靠包管理将 Polymer 解析为项目及其依赖项的单个兼容版本,并使用 html 导入来重复加载来自多个源的依赖项。

如果您将元素作为 Bower 包出售,那么网站可以包含它们,以及它们的依赖项和 Polymer 的导入,如果有兼容的 Polymer 版本可用,则在整个项目中使用该版本。

在 Polymer 的未来版本中,在完全规范 ES6 模块和加载器之后,我们可能会有一个仅通过模块导出的 Polymer 版本,以便多个版本可以限定为它们的显式导入,并且可以安全地共存于一个页面。

【讨论】:

能不能说的详细点?你是说小部件不应该依赖 Polymer,而是加载扩展的网页应该负责使 Polymer 可用? 不,我是说该元素将通过其 bower.json 中的依赖项依赖于 Polymer,并且 Bower 将警告 Polymer 的不兼容版本。所有 Polymer 元素都应通过 HTML 导入直接导入 polymer.html。

以上是关于如何在未知环境中安全加载 Polymer - 多个版本或命名空间?的主要内容,如果未能解决你的问题,请参考以下文章

转到主页不会在Polymer中加载页面

如何在Polymer 2.0中启用Shady DOM?

具有远程 HTML 导入的 Polymer/Web 组件未呈现

Polymer 2.x - 如何使这个搜索过滤器工作?

如何在Polymer 2.0 on-tap功能中传递参数?

如何在Polymer中使用app-localstorage-document