2016-07-13 62 views
34

Quali sono i vantaggi e gli svantaggi dell'utilizzo di ui-router-ng2 anziché del nuovo router Angular2? In passato ho usato ui-router con Angular 1.x invece di usare ngRoute, perché ho bisogno di un supporto migliore per stati/percorsi nidificati.router Angular2 VS router ui-router-ng2 VS ngrx

Quindi, per quanto riguarda Angular2? Mi piacerebbe sentirti, così posso valutare entrambe le opportunità.

Inoltre, cercando e cercando su Google ho trovato ngrx/router, che non sapevo. mi puoi dire quali sono le differenze tra il router integrato del Angular2, il nuovo ui-router per Angular2 e router NGRX?

+4

ngrx/router è DEPRECATED per angular 2 -> https://github.com/ngrx/router –

risposta

42

generale

NGRX percorso rdocs

router NGRX è Sconsigliata! C'è il migration strategy dal router ngrx al router Angular2 standard.

Angular2 Routerdocs

  1. soluzione di default da squadra angolare
  2. è stato ispirato da UI-router da AngularJS
  3. Costruito per i componenti

Angular2 router dispone di quasi tutti Funzionalità del router UI.

NG2 UI-routerdocs

Ben noto UI-router da AngularJS aggiornati per l'Angular2. Dai noti vantaggi - rende più agevole l'aggiornamento dal router UI AngularJS al router UI ng2.

Confrontando

Mettiamo a confronto la sintassi di UI-router entrambe le versioni con Angular2 Router.

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:

(Aggiornamento: proprietà - 012.è stato rimosso dopo V3-alpha7. Perché non ha funzionato con il caricamento lento delle rotte.)

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 {...} 

Come possiamo vedere, in generale, il router Angular2 è praticamente lo stesso. Come Oltre bisogno di dire che supporta la maggior parte delle caratteristiche comuni come dati statici/dinamici che condividono attraverso i percorsi, viste nidificate ecc

  • stesse strategie posizione (percorso e cancelletto)
  • definizioni di percorso simili
  • servizi simili:
    • $ state.go e Router.navigate
    • $ stateParams e RouteParams
    • $ state.current.data e RouteData
  • direttive simili
    • ui-view e router-outlet
    • ui-sref e routerLink

Conclusione

Angular2 Router aveva preso meglio di UI- esperienza del router e implementata. Se hai bisogno di migrare facilmente il tuo codice base con AngularJS UI-router su Angular2 in modo rapido e agevole, puoi provare il router U2 Ng2, altrimenti, penso che il router Angular2 si adatti al meglio. Anche se hai deciso di utilizzare il router UG NG2, controlla tutti i pro e i contro, al momento ritengo che la community sceglierà una soluzione standard dal team Angular, il che significa un supporto migliore.

+1

Avendo un paio di app Angular 1.x, inclusa un'app 1.5.x con componenti, ci può essere un argomento convincente attaccare con ui-router, poiché sta finalizzando il supporto del routing dei componenti per NG1 con i componenti. Il team di Angular sembra essere quasi sul punto di [piani di demolizione per un backport] (https://github.com/angular/angular.js/issues/15163) del router NG2 per le app NG1. Inoltre, i documenti UI-Router hanno appena ottenuto un lifting e sembrano molto migliorati nell'ultima volta che li ho guardati. – Jasman

+7

Abbiamo provato entrambi e il router UI Angular 2 basato sullo stato è la nostra prima scelta di gran lunga, proprio come quando costruivamo le app Angular 1. Il supporto è eccellente. Lo consiglio vivamente su router di serie Angular 2. – demisx

+0

@demisx puoi chiarire i motivi per cui hai scelto l'UI-Router su Angular 2 Router? A mio parere, le principali differenze delle funzionalità sono gli stati denominati, i valori dei parametri di default e non url in UI Router (che potrebbe essere argomenti sufficienti). Hai preso in considerazione altre differenze? – RobYed