【问题标题】:What should I include in my Polymer App Shell?我的 Polymer App Shell 中应该包含什么?
【发布时间】:2016-08-01 19:09:25
【问题描述】:

我开始专注于 Progressive Web App 环境,我正在使用 ASP.NET 4.6 和 MVC5 以及 Polymer Single Page App。我想知道我的 App Shell 中应该包含什么?

到目前为止,我已经包含了应用程序位置、应用程序路由、应用程序工具栏、应用程序抽屉布局,以及聚合物硫化。文件大小为 266 KB,我在第一次加载时注入了 HTML 内联。

这只会在视觉上加载导航栏。导航栏需要一个纸标签元素和我的自定义登录元素。我应该将它们包含在第一个负载中吗?

其他一切都是延迟加载的。

【问题讨论】:

    标签: asp.net-mvc polymer progressive-enhancement progressive-web-apps


    【解决方案1】:

    只需包含您将要使用的东西。如果你没有你需要的东西,那么当你意识到你需要它时就添加它。

    如果你想变得更复杂,你可以使用 this.importHref 延迟加载聚合物元素。但是,在延迟加载元素时必须小心,因为它们可能依赖于最终被延迟加载的其他聚合物元素,从而产生必须加载的长链元素。

    尝试保留您在应用初始加载时经常使用的元素,以及在应用的某些位置仅使用一次或两次的延迟加载元素。

    【讨论】:

    • 酷!谢谢一堆。我现在正在研究它的实现,你对延迟加载元素有什么建议吗?我正在使用带有 app-route 的 iron-pages,而我一直在做的是捕获所有 Iron-pages 的选定元素并使用 Polymer 检查它是否已加载。它比这更复杂一些,但它一直在工作。并不是说我有其他选择。该应用程序需要 30 秒才能完全加载裸露的骨骼(只有没有任何图像或实际内容的元素)
    • 顺便说一句,我应该只包含第一次绘制所需的元素吗?或者我应该包括在应用程序的许多部分中重复使用的所有“通用元素”?
    • 不错的答案@jamrizzi
    • 我只是给你一个如何延迟加载元素的例子。请把我的第一个答案设置为这个问题的正确答案。
    • 顺便说一下,为了帮助一个需要永远加载的应用程序,创建一个加载微调器,在任何聚合物材料加载之前加载,并在聚合物完成加载时将其移除。
    【解决方案2】:

    这是我在之前的回答中解释的一个例子。

    假设您构建了一个名为 lazy-element 的元素,您想要延迟加载。它位于 http://example.com/lazy-element.html。这是您可以加载它的一种方式。

    在当前元素中引用 lazy-element

    <lazy-element></lazy-element>
    

    当您的项目加载时,该元素将不会执行任何操作,因为它尚未加载。所以,让我们创建一个函数来延迟加载它。将此函数包含在您项目的某处(可能作为我们延迟加载的元素中的私有函数)。

    _loadElement: function(pathToElement) {
      this.importHref(pathToElement, function() {
        console.log(pathToElement + ' loaded');
      }.bind(this), function() {
        console.warn(pathToElement + ' failed to load');
      }.bind(this));
    }
    

    现在,只要您希望 lazy-element 在项目中激活,就调用此函数加载 lazy-element。也许您希望它在项目准备好 5 秒后激活。

    ready: function() {
      window.setTimeout(function() {
        this._loadElement('http://example.com/lazy-element.html');
      }, 5000);
    }
    

    【讨论】:

    • 非常感谢您的回答!!!我已经实现了一些更复杂的方法。根据选定的铁页或铁选择器延迟加载元素。为了实现这一点,我需要捕获铁选后发送的事件,检查元素是否已加载并使用 importHref 来实现它。我很快就会写一篇关于我是如何做到这一点的教程。非常感谢。
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2012-05-26
    • 2011-05-12
    • 2014-04-21
    • 1970-01-01
    • 2011-05-06
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多