2017-01-25 2 views
1

In Angular 1, wenn wir den Wert eines Ausdrucks für die Anzeige an den Benutzer formatieren möchten, verwenden wir Winkel Filters. In Angular 2 verwenden wir Pipe für die gleiche.Warum Winkel 2 "Filter" werden "Pipe" genannt?

Angular 1 Filter:

HTML:

<p> {{ greetings | reverse }}</p> 

Js:

app.filter('reverse', function() { 
    return function(input, uppercase) { 
    input = input || ''; 
    var out = ''; 
    for (var i = 0; i < input.length; i++) { 
     out = input.charAt(i) + out; 
    } 
    // conditional based on optional argument 
    if (uppercase) { 
     out = out.toUpperCase(); 
    } 
    return out; 
    }; 
}); 

Angular 2:

HTML:

<p> {{ greetings | reverse }}</p> 

Typoskript:

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({name: 'reverse'}) 
export class ReversePipe { 
    transform(input:string): string { 
    input = input || ''; 
    let out = ''; 
    for (var i = 0; i < input.length; i++) { 
     out = input.charAt(i) + out; 
    } 
    return out; 
    } 
} 

von im Code suchen, kann man schließen, dass beide dasselbe tut. Beide haben die gleichen Rollen und Verantwortlichkeiten. Was ich wissen möchte, ist Warum werden sie in Pipe in Angular 2 umbenannt?

+0

Also, Sie wollen wissen, was 'Pipe' ist? –

+1

Es ist wegen der '| 'Operator, der als Pipe bekannt ist. Der Name kam von dem Namen des Bedieners. –

+0

Aber Rohrbediener war mit Filtern auch ... Warum abstimmen? Habe ich etwas verpasst? –

Antwort

2

Da Pipe eine allgemeinere Bedeutung hat und nicht nur zum Filtern verwendet wird.

Sie können auch den Absatz von docs lesen wollen, warum filter in Angular 2 fehlt:

Angular nicht mit Rohren zum Filtrieren oder Sortierlisten versandt. Entwickler, die mit Angular 1 vertraut sind, kennen diese als Filter und orderBy. Es gibt keine Entsprechungen in Angular 2.

Dies ist kein Versehen. Angular 2 ist unwahrscheinlich, solche Rohre anzubieten, weil (a) sie schlecht funktionieren und (b) sie eine aggressive Verminung verhindern. Sowohl filter als auch orderBy benötigen Parameter, die Objekteigenschaften referenzieren. Wir haben früher gelernt, dass solche Rohre unrein sein müssen und dass Angular unreine Rohre in fast jeder Änderung Erkennungszyklus nennt.

Filtern und vor allem Sortieren sind teure Operationen. Der Benutzer Erfahrung kann stark für sogar mittelgroße Listen degradieren, wenn Angular diese Pipe-Methoden viele Male pro Sekunde aufruft. Die Filter und orderBy wurden oft in Angular 1 apps missbraucht, was zu Beschwerden führte, dass Angular selbst langsam ist. Diese Ladung ist in dem indirekten Sinn angemessen, dass Angular 1 diese Leistungsfalle durch anbietet, die Filter und orderBy an erster Stelle anbietet.

Verwandte Themen