2016-07-13 11 views
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ルートが Rdocs

ngrxルータが非推奨です! 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ルータ

    更新:プロパティ - nameは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 Routerはほとんど同じです。さらにとして、それはなどのルートを通じて共有する静的/動的データ、ネストされたビュー

    • 同じ場所戦略(パスとハッシュ)
    • 同様のルート定義
    • のような一般的な機能のほとんどをサポートすることを言う必要があります同様のサービス:
      • $ state.goとRouter.navigate
      • $ stateParamsとRouteParams
      • $ state.current.dataとRouteData
    • 同様のディレクティブ
      • UIビューおよびルータアウトレット
      • UI-SREFとrouterLink

    Angular2ルータはUI-のベストを取っていた結論

    ルータの経験とそれを実装しました。 AngularJS UI-routerを使ってコードベースをAngular2に素早くスムーズに移行する必要がある場合は、Ng2 UI-routerを試してみてください。そうしないと、Angular2 Routerが最適と思われます。 NG2 UI-routerを使用することに決めたとしても、すべての長所と短所をチェックしてください。現時点では、コミュニティーがAngularチームの標準ソリューションを選択するようになっています。

  • +1

    コンポーネントを含む1.5.xアプリを含む2つのAngular 1.xアプリを使用すると、コンポーネントを持つNG1のコンポーネントルーティングのサポートを完成させるため、ui-routerに固執する必要があります。 Angularチームは、NG1アプリのNG2ルータの[バックポートの廃棄計画](https://github.com/angular/angular.js/issues/15163)の時点にあるようです。また、UIルーターのドキュメントは、ちょうど顔を上げて、最後に見たときに大幅に改善されているように見えます。 – Jasman

    +7

    Angular 1のアプリケーションを構築していたときと同じように、Angular 2 UI-Routerの最初の選択肢は、両方を試してみました。サポートは優れています。高度に2の在庫ルータ以上にそれを強くお勧めします。 – demisx

    +0

    @demisxあなたはAngular 2 RouterよりUI-Routerを選択する理由を明確にすることができますか?私の意見では、主な機能の違いは、UIルーターの状態、デフォルト、および非urlパラメータの値です(十分な引数になります)。あなたは他の違いを考えましたか? – RobYed

    関連する問題