2016-07-13 17 views
34

Was sind die Vor- und Nachteile der Verwendung von ui-router-ng2 anstelle des neuen Angular2-Routers? In der Vergangenheit habe ich den ui-Router mit Angular 1.x anstelle von ngRoute benutzt, weil ich bessere Unterstützung für verschachtelte Zustände/Routen benötige.Angular2 router VS ui-router-ng2 VS ngrx router

Also, was ist mit Angular2? Ich würde gerne von Ihnen hören, damit ich beide Möglichkeiten bewerten kann.

Außerdem Suche und Suche auf Google fand ich ngrx/router, die ich nicht kannte. Können Sie mir sagen, was sind die Unterschiede zwischen dem eingebauten Router von Angular2, dem neuen UI-Router für Angular2 und ngrx Router?

+4

ngrx/Router ist für eckig 2 -> https://github.com/ngrx/router –

Antwort

42

Allgemeine Informationen

NGRX Strecke rdocs

NGRX Router Veraltete! Es gibt migration strategy von ngrx Router zum Standard Angular2 Router.

Angular2 Routerdocs

  1. Standardlösung von Angular Team
  2. Wurde von UI-Router von AngularJS inspiriert
  3. für Komponenten Errichtet

Angular2 Router fast alle haben UI-Router-Funktionen.

NG2 UI-Routerdocs

Bekannte UI-Router von AngularJS für die Angular2 aktualisiert. Von den bekannten Vorteilen - macht reibungslosere Aktualisierung von AngularJS UI-Router zu ng2 UI-Router.

Vergleich Lassen Sie sich Syntax von UI-Router Router beiden Versionen mit Angular2 vergleichen.

AngularJS UI-Router:

app.config(function($stateProvider){ 
    $stateProvider.state('home', { 
     url: '/home', 
     templateUrl: 'home.html', 
     controller: 'HomeCtrl' 
    }) 
}); 

Angular2 UI-Router:

export let state1: Ng2StateDeclaration = { 
    name: 'home', 
    component: HomeComponent, 
    url: '/home' 
} 

@NgModule({ 
imports: [ 
    SharedModule, 
    UIRouterModule.forChild({ states: [home] }) 
], 
declarations: [HomeComponent] 
}) 
export class MyModule {} 

Angular2 Router:

(Update: Eigenschaft - name wurde nach V3-alpha7 entfernt. Weil es mit dem langsamen Laden von Routen nicht geklappt hat.)

import { 
    RouteConfig, 
    Route 
} from 'angular2/router'; 
import {HomeComponent} from './components/home'; 

@Component({}) 
@RouteConfig([ 
    new Route({ 
     path: '/home', 
     component: HomeComponent, 
     name: 'Home' // Deprecated property, works until v3-alpha7 
    }) 
]) 
export class App {...} 

Wie wir sehen können, ist im Allgemeinen Angular2 Router ziemlich gleich. Als Ergänzung müssen sagen, dass es die meisten gängigen Funktionen wie statische/dynamische gemeinsamen Nutzung von Daten durch die Routen, verschachtelte Ansichten usw.

  • Gleiche Standortstrategien (Pfad und Hash)
  • ähnliche Route Definitionen
  • unterstützt
  • Ähnliche Dienste:
    • $ state.go und Router.navigate
    • $ stateParams und RouteParams
    • $ state.current.data und Routedata
  • ähnliche Richtlinien
    • ui-Ansicht und Router-Ausgang
    • ui-Sref und Router

Fazit

Angular2 Router Beste UI- genommen hatte Router Erfahrung und implementiert es. Wenn Sie Ihre Code-Basis mit AngularJS UI-Router auf Angular2 schnell und reibungslos migrieren möchten, können Sie Ng2 UI-Router ausprobieren, sonst würde ich denken, dass Angular2 Router am besten passt. Selbst wenn Sie sich für den NG2 UI-Router entschieden haben, sollten Sie alle Vor- und Nachteile prüfen. Momentan habe ich das Gefühl, dass die Community eine Standardlösung des Angular-Teams wählen wird, was besseren Support bedeutet.

+1

DEPARCATED Mit ein paar Angular 1.x-Anwendungen, einschließlich einer 1.5.x-App mit Komponenten, kann es ein überzeugendes Argument sein um mit dem UI-Router zu bleiben, da die Komponenten-Routing-Unterstützung für NG1 mit Komponenten abgeschlossen ist. Das Angular-Team scheint fast am Punkt [Pläne für einen Backport zu verwerfen] (https://github.com/angular/angular.js/issues/15163) des NG2-Routers für NG1-Apps. Außerdem haben die UI-Router-Dokumente gerade ein Facelifting bekommen und scheinen stark verbessert zu sein, als ich sie das letzte Mal angeschaut habe. – Jasman

+7

Wir haben beides ausprobiert und der zustandsabhängige Angular 2 UI-Router ist bei weitem unsere erste Wahl, genau wie damals, als wir Angular 1-Apps gebaut haben. Unterstützung ist ausgezeichnet. Empfehlen Sie es sehr über Angular 2 Stock Router. – demisx

+0

@demisx können Sie die Gründe für die Wahl von UI-Router über Angular 2 Router klären? Meiner Meinung nach sind die Hauptmerkmalunterschiede benannte Zustände, Standard- und Nicht-URL-Parameterwerte im UI-Router (was ausreichend Argumente sein könnten). Hast du irgendwelche anderen Unterschiede in Betracht gezogen? – RobYed