在开发聚合物纤维网组件时,我最终通过硫化来运行它们 在生产上服务。不幸的是,这给我带来了一个问题 我想用两个单独的包。
我有一个base.html
文件,其中包含所有主要的导入
将在整个网站上,每页上使用。我把它硫化为
base.build.html
。
然后对于不同的页面,我可能只为该页面进行自定义导入,例如。
contact-page.html
这两个都加载在<head>
示例代码段:
<head>
<!-- snip -->
<!-- This is the vulcanized file -->
<link rel="import" href="/static/elements/site-base.build.html">
<!-- This extra import causes the extra errors -->
<link rel="import" href="/static/elements/timeline-base.html">
<!--
File above is not currently vulcanized, but the import still breaks
even if it is
merging that import into site-base solves the problem.
Also, if the site-base import _is not_ vulcanized, then both imports
work fine
-->
<!-- snip -->
</head>
这里的想法是base.build.html
被缓存并且可用于所有人
后续页面。其他捆绑包仅根据需要加载和缓存。
问题是,如果我只加载我的基本包,则所有webcomponents都可以使用 精细;但是,如果我然后执行任何额外的导入,那么大部分的web组件都会在 页面中断,控制台中有大量错误消息。
目前的解决方法只是在我的基础中包含所有额外的导入 捆绑,但这当然最终有一个更大的bunlde文件加载 脚本和CSS,我不需要在每一页上。
这是Vulcanize的一招吗?或者它可能与它有关 脚本的导入订单?
注意:有问题的网站不是单页应用。这些是 传统的服务器端呈现网站模板,所以构建过程非常 不同于聚合物加工工具。
答案 0 :(得分:1)
如果没有看到您收到的错误消息,我认为您遇到的问题是,您的额外导入包括已经捆绑在硫化基础包中的元素(很可能是polymer.html)。并且Polymer尝试初始化相同的元素两次时会抛出错误。
这意味着您通常不能将硫化与非硫化包装混合。
让多个硫化包一起工作也很棘手,你必须使用硫化的recyclerview.swapAdapter(myAdapter,false);
recyclerview.setLayoutManager(myLayoutManager);
myAdapter.notifyDataSetChanged();
和/或-exclude
选项来确保没有元素(及其依赖性) )第一个包中包含的内容将包含在第二个包中。