gpt4 book ai didi

javascript - 第三方 polymer 元件

转载 作者:行者123 更新时间:2023-11-29 22:02:39 24 4
gpt4 key购买 nike

我试图了解 polymer 是否是为特定用例构建的——第三方网络组件。

我需要完成的是创建一个 Web 组件,它从调用者的页面获取图像 URL(元素上的属性是可以的)作为输入,并在 polymer 组件内部使用 HTML5 Canvas 以特殊方式呈现图像。

对我来说, polymer 目前似乎不是为第三方使用而构建的。原因:

  • 必须对调用者的页面有足够的控制才能添加 platform.js<head> ,特别是 <head>
  • 我的版本platform.js可能与调用者页面的 platform.js 不同(或者至少我正在用 polymer 的 JS objs 污染页面,对吧?)
  • 在非 chrome 浏览器样式和其他标签中注入(inject) <head> , 可能与源页面冲突
  • 必须控制调用者的 <body>如果要设置选项以避免 FOUC,请标记

传统上,我所有的 Web 组件都是通过 iframe 构建的,我想对我的方法进行现代化改造,以期实现“shadow-dom 的 future ”。

有没有办法以第三方安全的方式使用 polymer ?也许是 [lightningjs?

最佳答案

Polymer 和 Web Components 完全围绕第 3 方使用构建,这是一个核心设计支柱。

IMO 最广泛的概念是,开发人员将能够访问网络并找到众多可供选择的网络组件。这与能够从大量 JQuery 插件中进行选择没有什么不同,但具有更大程度的互操作性和组合性,因为每个实例都可以被视为传统元素。

platform.js

Platform.js 正在为称为 Web 组件的 future 浏览器功能建模。 现在使这项工作具有现实意义,所以是的,为了让第三方完全使用 Web 组件,他们需要选择加入 platform.js(以及所有相关内容)。的确,这个事实使得(今天)在未经他们同意的情况下将 Web 组件注入(inject)到某人的页面中变得很困难。

my version of platform.js could potentially be different than the caller page's

如上所述,platform.js 是使用 Web Components 所必需的。这就是为什么它被这样命名的原因。除非主页所有者包含此功能,否则他不会提供您可以向其提供 Web 组件的平台。

这与现代图书馆没有什么不同,例如查询。如果您不小心,可以在一个文档中加载多个 JQuery 副本和/或版本,但这是一种浪费。协调优先。

除了 platform.js 之外,Web Components 是围绕使用 M 个依赖项的 N 个模块而设计的,并且所有这些都以最佳方式协同工作。这是共享作为设计支柱的另一种方式。

in non-chrome browsers style and other tags are injected into , possibly conflicting with the source page

这都是 polyfilling 的代价。如果你需要纯净的环境,你将不得不等到 Web Components 被广泛地本地实现。实际上,样式标签非常专业,不太可能与任何内容发生冲突。

one must have control over the caller's tag if wanting to set options to avoid FOUC

这不完全正确,您可以构建在一定程度上控制自己的 FOUC 的 Web 组件。但这是很多额外的工作,而且作为第三方,你真的无法知道某个开发者将采用什么样的加载机制或惯用语,因此在没有他的配合下试图进行过多的编排将是困难的。

Traditionally all my web components have been built via iframes

IFRAME 与 Web 组件有很大不同。 IFRAME 是一个新的上下文,因此您有更多的安全网,但它是重量级的并且存在协调成本。

虽然 platform.js 本质上正在改变共享平台,但自定义元素本身不需要扰乱用户的全局命名空间或他的 CSS(尽管它们可以)。代码可以限制在元素的原型(prototype)中,CSS 和 DOM 可以隐藏在 ShadowDOM 中。总体意图是,除非有人想要,否则这些都不需要从元素中泄漏出来。

关于javascript - 第三方 polymer 元件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com