聚合物 3 相对路径

polymer 3 relative paths

我想将聚合物元素从聚合物 2 迁移到聚合物 3。

聚合物元素使用包含 .svg 文件的文件夹的相对路径。

const url = this.resolveUrl('./icons/' + this.icon + '.svg');

问题是旧的组件文件是一个 .html 文件,所以如果你包含它,脚本部分中的相对路径总是相同的。

现在组件文件是一个 javascript 文件,因此相对路径 (.) 是包含 javascript 文件的文件的路径。


要解决此问题,请将以下 getter 方法添加到您的元素 class:

static get importMeta() { 
  return import.meta; 
}

加载元素时,上面的 getter 会分配元素的 importPath 属性。 resolveUrl 现在将基于 importPath 而非基于主文档解析相对路径。

顺便说一句,您也可以在数据绑定中使用 importPath,如下所示:

<img src$="[[importPath]]/icons/[[icon]].png">

有关 Polymer 为什么默认不重写模板中的 URL 的更多信息,see the documentation on DOM templating

(顺便说一句,该页面上关于 importPath 的内容似乎需要更新。我 raised an issue 以使用我在上面概述的最新信息更新网站。)

希望对您有所帮助