按需加载 Polymer 元素

Loading Polymer elements on demand

我正在尝试减少需要加载大量元素的 Polymer 页面的加载时间。

所以,考虑让元素按需加载,意味着一旦我在 HTML 代码中使用了一个元素,如果没有加载,它会立即加载。

有人知道如何做到这一点吗?
当使用未知的 HTML 元素时,可能会触发某些事件?因此,一旦发生这种情况,我可以使用 importHref() 处理加载?


iron-lazy-pages 可能对你有用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
</app-location>
<app-route
    data="{{route_data}}"
    pattern="/:page"
    route="{{route}}"
></app-route>

<iron-lazy-pages attr-for-selected="data-route" selected="{{route_data.page}}">
    <x-page1 data-route="page1" data-path="demo/x-page1.html"></x-page1>
    <x-page2 data-route="page2" data-path="demo/x-page2.html"></x-page2>
    <section data-route="page3">
        My inline element.
    </section>
</iron-lazy-pages>

您可以使用以下方式安装:

1
bower install --save TimvdLippe/iron-lazy-pages


这取决于您的需求,没有标准的优化方法,但您可以使用 Vulcanize 工具并测试性能。

如果您不想在一个请求中加载所有 Web 组件,您可以在初始页面/视图中硫化所有需要的元素。因此,您将在一个请求中加载一组元素并在您的第一页中使用它们。

然后,您可以实现延迟加载,包括将链接标签添加到每个 web 组件的 head 部分。这样浏览器的解析任务中就不会进行加载过程,所以不会阻塞。