【发布时间】:2016-01-31 23:54:09
【问题描述】:
我正在使用本机实现创建一个 Web 组件,它的 html 模板中包含指向图像的链接。 但是,这些链接仅在它们是绝对的或相对于主文档时才有效,这意味着该组件不可重用或不可移植。此外,这是非常违反直觉的。
目前,我为所有需要使用图像的元素添加了一个 data-url_prefix 属性。然后,在为我的自定义元素创建影子根时,我将 {{URL_PREFIX}} 替换为该参数的值。
我的解决方案似乎很糟糕。如果您提供更好的建议,我将非常高兴,谢谢。
我在http://webcomponents.org/polyfills/html-imports/ 页面上发现了一个有趣的引述:
填充注释
在导入的文档中,HTML 中的 href 和 src 属性,以及 url CSS 文件中的属性,相对于导入的位置 文档,而不是主文档。
为什么 polifill 会使用与原生实现不同的逻辑?
Web 组件理想情况下应该封装所有依赖项,但如果 Web 组件需要图像,它应该知道该图像的绝对 URL,这不允许在文件结构中简单地移动组件。
比如说,我有以下结构:
- index.html
- CSS
- main.css
- js
- main.js
- web_components
- cool_web_component
- cool_web_component.html
- icon.png
- cool_web_component
如果我将其更改为以下内容:
- index.html
- CSS
- main.css
- js
- main.js
- cool_web_component
- cool_web_component.html
- icon.png
我需要在这些文件中的某处更改指向 icon.png 的指针 我的问题是如何避免它,或者以优雅的方式解决它。另外,为什么实际的原生实现与 polyfill 冲突?
【问题讨论】:
-
你能再解释一下吗?你的意思是如果有结构 root->some_folder->image 并且你的 php 是 root->athor_folder->php_file.php 你想在 php_file.php 添加一个 img 标签来引用图像文件夹中的图像?
-
@Laurentiu,看看我的编辑,我希望它能澄清你的不理解。
-
你可以使用像你的 js 这样的图像文件夹,并且你的绝对路径总是相同的,这意味着在你的 html 中你永远不需要使用相对路径并且你的组件是可移植的。可能 POLYFILL 会做一些事情,比如在 symfony 中重写 css,在 symfony 中也使用图像的相对路径,并且在资产 symfony 将其转换为根文件夹的绝对路径之后。我不是 POLYFILL 方面的专家,但希望这会有所帮助。
标签: javascript html polymer web-component custom-element