Polymer问题导入主要Vulcanized bundle

时间:2017-02-15 15:32:59

标签: polymer web-component vulcanize

在开发聚合物纤维网组件时,我最终通过硫化来运行它们 在生产上服务。不幸的是,这给我带来了一个问题 我想用两个单独的包。

我有一个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的一招吗?或者它可能与它有关 脚本的导入订单

注意:有问题的网站不是单页应用。这些是 传统的服务器端呈现网站模板,所以构建过程非常 不同于聚合物加工工具。

1 个答案:

答案 0 :(得分:1)

如果没有看到您收到的错误消息,我认为您遇到的问题是,您的额外导入包括已经捆绑在硫化基础包中的元素(很可能是polymer.html)。并且Polymer尝试初始化相同的元素两次时会抛出错误。

这意味着您通常不能将硫化与非硫化包装混合。

让多个硫化包一起工作也很棘手,你必须使用硫化的recyclerview.swapAdapter(myAdapter,false); recyclerview.setLayoutManager(myLayoutManager); myAdapter.notifyDataSetChanged(); 和/或-exclude选项来确保没有元素(及其依赖性) )第一个包中包含的内容将包含在第二个包中。