我应该在我的 Polymer 应用程序 Shell 中包含什么?

What should I include in my Polymer App Shell?

我开始深入研究渐进式 Web 应用程序环境,我正在使用 ASP.NET 4.6 和 MVC5 来处理类似 Polymer 单页应用程序的问题。我想知道我应该在我的应用程序中包含什么 Shell?

到目前为止,我已经包含了 app-location、app-route、app-toolbar、app-drawer-layout,并使用 Polymer 硫化。文件大小为 266 KB,我在第一次加载时插入 HTML 内联。

这只会加载视觉加载导航栏。导航栏需要一个 paper-tab 元素和我的自定义登录元素。我应该把它们包括在拳头负载中吗?

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

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

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

尽量保留在应用的初始加载中经常使用的元素,并延迟加载仅在应用的特定位置使用一次或两次的元素。

这是我在之前的回答中解释的示例。

假设您构建了一个名为 lazy-element 的元素,您希望对其进行延迟加载。它位于 http://example.com/lazy-element.html。您可以通过以下方式加载它。

在您的当前元素中引用 惰性元素

<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);
}