anchor.diff:    We learned earlier that such pipes must be  [*impure*](#pure-and-impure-pipes) and that
     Angular calls impure pipes in almost every change detection cycle.
   
  +  这并不是疏忽。Angular 2不想提供这些管道，因为 (a) 它们性能堪忧，以及 (b) 它们会阻止比较激进的代码最小化(minification)。
  +  无论是`filter`还是`orderBy`都需要它的参数引用对象型属性。
  +  我们前面学过，这样的管道必然是[*非纯管道*](#pure-and-impure-pipes)，并且Angular会在几乎每一次变更检测周期中调用非纯管道。
  +
     Filtering and especially sorting are expensive operations.
     The user experience can degrade severely for even moderate sized lists when Angular calls these pipe methods many times per second.
     The `filter` and `orderBy` have often been abused in Angular 1 apps, leading to complaints that Angular itself is slow.
     That charge is fair in the indirect sense that Angular 1 prepared this performance trap
     by offering `filter` and `orderBy` in the first place.
   
  +  过滤，特别是排序是昂贵的操作。
  +  当Angular每秒调用很多次这类管道函数时，即使是中等规模的列表都可能严重降低用户体验。
  +  在Angular 1程序中，`filter`和`orderBy`经常被误用，结果连累到Angular自身，人们抱怨说它太慢。
  +  从某种意义上，这也不冤：谁叫Angular 1把`filter`和`orderBy`作为首发队员呢？是它自己准备了这个性能陷阱。
  +
     The minification hazard is also compelling if less obvious. Imagine a sorting pipe applied to a list of heroes.
     We might sort the list by hero `name` and `planet` of origin properties something like this:
  +
  +  虽然不是很明显，但代码最小化方面也存在风险。想象一个用于英雄列表的排序管道。我们可能根据英雄原始属性中的`name`和`planet`进行排序，就像这样：
   code-example(language="html")
     &lt;!-- NOT REAL CODE! -->
     &lt;div *ngFor="let hero of heroes | orderBy:'name,planet'">&lt;/div>
  
positive.code:   So is our `FlyingHeroesPipe`.
    A few steps back we reviewed the `FlyingHeroesImpurePipe` &mdash; *an impure pipe with a pure function*.
  
    But a *pure pipe* must always be implemented with a *pure function*. Failure to heed this warning will bring about many a console errors regarding expressions that have changed after they were checked.
  
  .l-main-section
  :marked
    ## Next Steps
  
    Pipes are a great way to encapsulate and share common display-value
    transformations. We use them like styles, dropping them
    into our templates expressions to enrich the appeal and usability
    of our views.
  
    Explore Angular's inventory of built-in pipes in the [API Reference](../api/#!?apiFilter=pipe).
    Try writing a custom pipe and perhaps contributing it to the community.
  
  a(id="no-filter-pipe")
  .l-main-section
  :marked
    ## No *FilterPipe* or *OrderByPipe*
  
    Angular does not ship with pipes for filtering or sorting lists.
    Developers familiar with Angular 1 know these as `filter` and `orderBy`.
    There are no equivalents in Angular 2.
  
    This is not an oversight. Angular 2 is unlikely to offer such pipes because
    (a) they perform poorly and (b) they prevent aggressive minification.
  
negative.code:   and the component doesn't have to unsubscribe when it is destroyed
    (a potent source of memory leaks).
  
    这个Async管道把样板数据存在了组件代码中。
    组件不用订阅这个异步数据源，而且不用在被销毁时取消订阅（如果订阅了而忘了反订阅容易导致隐晦的内存泄露）。
  
    ### An impure caching pipe
    ### 一个非纯而且带缓存的管道
  
    Let's write one more impure pipe, a pipe that makes an HTTP request to the server.
    Normally, that's a horrible idea.
  