1

速度与性能

Angular 2 比 Angular 1 快得多,它支持通过服务器端预渲染实现快速初始加载、用于快速启动的离线编译以及用于平滑虚拟滚动和快速视图转换的超快更改检测和视图缓存。

这些功能看起来很棒,但一个正常的要求是,当我从 导航ListComponent到 时ViewComponent,我希望保留ListComponent缓存,所以当我从 中单击返回时ViewComponentListComponent不需要重新渲染(ListComponent通常从第 2、3 页等获取 AJAX 数据。我知道我可以将数据保存在服务中并scrollPosition在单击返回时存储,但它会再次重新呈现数据。我真的认为缓存它是一种更好的方法。

我实现CanReuse了 ,但它不起作用,它只在 . 之间导航时起作用ViewComponentsListComponent所以,我想知道ViewComponent缓存是如何工作的。

4

1 回答 1

1

使用ProtoViewRef类:

ProtoView 是一个原型视图,它是模板编译的结果,Angular 使用它来基于已编译的模板有效地创建此视图的实例。

大多数 ProtoViews 都是由 Angular 在内部创建和使用的,您不需要了解它们,除非在高级用例中您通过低级 Compiler API 自己编译组件。

例子

鉴于此模板:

Count: {{items.length}}
  <ul>
    <li *ngFor="var item of items">{{item}}</li>
  </ul>

Angular 将模板脱糖并编译成两个 ProtoView:

  • 外部 ProtoView:

    Count: {{items.length}}
    <ul>
      <template ngFor var-item [ngForOf]="items"></template>
    </ul>
    
  • 内部 ProtoView:

    <li>{{item}}</li>
    

请注意,原始模板被分解为两个单独的 ProtoView。

参考

于 2016-01-14T06:45:04.517 回答