34

새로운 Angular2 라우터 대신 ui-router-ng2을 사용하면 어떤 이점과 단점이 있습니까? 과거에는 ngRoute를 사용하는 대신 Angular 1.x와 함께 ui-router를 사용했습니다. 중첩 된 상태/경로를 더 잘 지원해야하기 때문입니다.Angular2 라우터 VS ui-router-ng2 VS ngrx 라우터

이제 Angular2는 어떻습니까? 나는 너에게 듣고 싶다. 그래서 나는 두 가지 기회를 평가할 수있다.

게다가 Google에서 검색하고 검색 한 결과 ngrx/router은 내가 모르는 것을 발견했습니다. 내장 라우터 Angular2, 새로운 ui-router Angular2 및 ngrx 라우터 사이의 차이점은 무엇입니까?

+4

앵귤러 2에 대해서는 ngrx/router가 권장되지 않습니다. -> https://github.com/ngrx/router –

답변

42

일반 정보

NGRX 경로docs

ngrx 라우터가 를 더 이상 사용되지 않습니다 R! ngrx 라우터에서 표준 Angular2 라우터까지 migration strategy이 있습니다. 각도 팀

  • 을에서

    Angular2 라우터docs

    1. 기본 솔루션은

    Angular2 라우터는 거의 모든이 구성 요소의 내장

  • AngularJS와에서 UI 라우터에 의해 영감을했다 UI 라우터 기능. Angular2 업데이트 AngularJS와 발

    NG2 UI 라우터docs

    공지 UI 라우터. 알려진 장점을 통해 AngularJS UI-router에서 ng2 UI-router로 원활하게 업데이트 할 수 있습니다.

    비교

    의이 UI 라우터 Angular2 라우터와 두 버전의 구문을 비교해 보자.

    AngularJS와의 UI 라우터 :

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

    Angular2 UI 라우터 :

    export let state1: Ng2StateDeclaration = { 
        name: 'home', 
        component: HomeComponent, 
        url: '/home' 
    } 
    
    @NgModule({ 
    imports: [ 
        SharedModule, 
        UIRouterModule.forChild({ states: [home] }) 
    ], 
    declarations: [HomeComponent] 
    }) 
    export class MyModule {} 
    

    Angular2 라우터 :

    (업데이트 : 부동산 - 012,은 V3-alpha7 이후에 제거되었습니다. 게으른 로딩과 함께 작동하지 않았기 때문입니다.)

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

    일반적으로 볼 수 있듯이, Angular2 라우터는 거의 동일합니다. 또한 그것은 등 경로를 통해 공유 정적/동적 데이터, 중첩 된 뷰

    • 동일 위치 전략 (경로 및 해시)
    • 비슷한 경로를 정의
    • 같은 일반적인 기능의 대부분을 지원하는지 말할 필요 유사 서비스 :
      • $ state.go 및 Router.navigate
      • $ stateParams 및 RouteParams
      • $ state.current.data 및으로 RouteData
    • 유사 지침
      • UI 뷰 및 라우터 콘센트
      • 의 UI (SREF)과 routerLink

    Angular2 라우터는 UI-의 최선을 촬영했다

    결론 라우터 경험을 제공하고 구현했습니다. AngularJS UI-router를 사용하여 코드 기반을 Angular2로 빠르고 쉽게 마이그레이션해야하는 경우 Ng2 UI 라우터를 사용해보십시오. 그렇지 않으면 Angular2 라우터가 가장 적합 할 것입니다. NG2 UI-router를 사용하기로 결정 했더라도 모든 장단점을 확인하십시오. 현재 커뮤니티에서 Angular 팀의 표준 솔루션을 선택하는 것이 더 나은 지원이라고 생각합니다.

  • +1

    구성 요소가있는 1.5.x 앱을 포함하여 Angular 1.x 앱이 두 개인 경우 매력적인 인수가있을 수 있습니다. 구성 요소가있는 NG1에 대한 구성 요소 라우팅 지원을 마무리함에 따라 ui-router를 고수해야합니다. Angular 팀은 NG1 앱용 NG2 라우터의 [백 포트 계획 취소] (https://github.com/angular/angular.js/issues/15163) 시점에있는 것으로 보입니다. 또한 UI-Router 문서는 최근에 얼굴을 새겼으며 마지막으로 보았을 때 크게 개선 된 것처럼 보입니다. – Jasman

    +7

    우리는 앵글 러 1 앱을 제작할 때와 마찬가지로 상태 기반 앵글 2 UI 라우터를 선택했습니다. 지원은 훌륭합니다. 고도 2 재고 라우터 이상으로 권장합니다. – demisx

    +0

    @demisx Angular 2 Router보다 UI-Router를 선택하는 이유를 명확히 할 수 있습니까? 필자의 주요한 차이점은 UI Router의 state, default 및 non-url 매개 변수 값입니다 (충분한 인수가 될 수 있음). 다른 점을 고려 했습니까? – RobYed