我正在使用本机实现创建一个 Web 组件,它的 html 模板中包含指向图像的链接。但是,这些链接仅在它们是绝对的或相对于主文档时才有效,这意味着该组件不可重用或可移植。此外,这是非常违反直觉的。
目前,我为所有需要使用图像的元素添加了一个 data-url_prefix 属性。然后,在为我的自定义元素创建影子根时,我将 {{URL_PREFIX}} 替换为该参数的值。
我的解决方案似乎很糟糕。如果您提供更好的建议,我将非常高兴,谢谢。
我在http://webcomponents.org/polyfills/html-imports/页面上找到了一个有趣的引用:
填充注意事项
在导入的文档中,HTML 中的 href 和 src 属性以及 CSS 文件中的 url 属性是相对于导入文档的位置,而不是主文档。
为什么 polifill 会使用与本机实现不同的逻辑?
Web 组件 理想情况下应该封装所有依赖项,但是如果 Web 组件需要图像,它应该知道该图像的绝对 URL,这不允许组件在文件结构中简单地移动。
比如说,我有以下结构:
- 索引.html
- css
- main.css
- js
- main.js
- web_components
- cool_web_component
- cool_web_component.html
- 图标.png
- cool_web_component
如果我将其更改为以下内容:
- 索引.html
- css
- main.css
- js
- main.js
- cool_web_component
- cool_web_component.html
- 图标.png
我需要在这些文件中的某处更改指向 icon.png 的指针我的问题是如何避免它,或者以优雅的方式解决它。另外,为什么实际的本机实现与 polyfill 冲突?