ASP.NET MVC 4プロジェクトがあり、Angular.jsまたはKnock.jsを使用するJavaScriptフレームワークまたはライブラリのアーキテクチャ上の決定に固執しています。私は現在、Knockout.jsではなくAngular.jsを使用することに傾いていますが、プロジェクト開発の途中で見つけたくはありませんでした。
背景を次に示します。
私は素晴らしい答えを読んだ here とスコット・アレンのAngular here についてのインタビューを見た
現在のASP.NET MVC 4アーキテクチャからWeb APIなどのサーバー側で何かを使用するように変更することはできないため、MVC 4でAngular.jsを実装しようとすると concerns があります。サーバー上とクライアント上に2つのモデルがありますか?
AngularとKnockoutには長所と短所があると思うので、どちらが良いかという議論は探していません。JavaScriptフレームワークまたはライブラリの実装に関する実際のコードを探しています。 ASP.NET MVC 4アプリケーション。これから2年以上経っても解決できるソリューションが必要です。
アイデアや提案はありますか?たぶん答えはKnockやAngularではなく、他のJavaScriptフレームワークですか?
この質問を見てうれしかったのはコミュニティにとって興味のあることでした;)完全を期すために、私がやったことは次のとおりです。
私はAngularJSとASP.NET MVC 4を使用しましたが、使用できて良かったです。ただし、Angularには急な学習曲線がありますが、ディレクティブの力のために価値があります。
私の2セント相当。
前文-angularとknockoutの両方で作業しました。MVVM/ MVC libで構築された3番目の重要なフロントエンドにいます。
MVVMはwpf/silverlightの仕組みに非常に似ているため、ノックアウトから始めました。そしてそれはうまく機能します。チュートリアルとドキュメントは一流です。すべてのコーダーは、数日以内に、または.netでmvvmを使用した場合、その後数時間以内に、knockout.jsで作業できます。
ただし、最近ではangularを使用しており、おそらく次の理由でこれに固執するでしょう。
角度は完全なフレームワークです-ノックアウトは、実際にはちょうど2つの方法のバインディングです。残りの作業を行うには、まだbackbone.js/jqueryのような他のライブラリが必要です。
角度には依存性注入があります。追加するのに最適です
テストのモックとコードの構造化。
angleは、通常のJS変数をその$ scopeオブジェクト内のオブザーバブルとして扱います。つまり、特別な方法で宣言する必要はありません
私はangular fanboyではありません。彼らが現在持っている「ファンキーな」MVVM/MVCハイブリッドアーキテクチャではなく、MVVMアーキテクチャに移行できると思います。
angularの最大の問題は、ドキュメントです。ノックアウトと比較して、それは悲惨です。それは、コーダーをスピードアップするための追加の時間とコストを追加します。私見最高の選択。
AngularJsについてはあまり情報を提供していませんが、Knockoutについていくつかの考えを提供したいと思います。
Knockoutは主に、ビューをビューモデルに接続するためのデータバインディングライブラリですが、それ以上の機能を実際には提供していません。複雑なクライアントベースのWebサイトを構築するためのメインライブラリとしてノックアウトを単独で使用することはお勧めしません。
スパのような機能(ハッシュタグナビゲーションなど)を実装しているか、主にMVCサーバー側のビュー(Razorなど)を使用しているかについては言及しませんでした。ページごとのレベルで迅速なデータバインディングを探している場合は、それについても再検討します。私にとって、これらの両方(角度またはノックアウト)は、クライアント側の開発体験を強化するように設計されています-MVCなどのサーバー側のアプローチではありません。
一部でもSPAアプローチを検討している場合、ビューのアクティブ化ライフサイクルをある程度制御できるフレームワークが必要になるでしょう。
データバインディングのパワーと信頼性に関しては、Knockoutを信じています。私はそれを広範囲に使用しており、非常に好きになりました。ノックアウトの感触が好きなら、 Durandal を調べてください。 Durandalは、多くの「スパ」Webプロジェクトのニーズを満たすことができるきちんとしたフレームワークです。 Knockoutを含むいくつかの実績のあるライブラリの上に構築されたクライアント側のフレームワークです。これは、Angularよりも少し(多く)軽量であり、おそらくユーザーにとっては簡単です。
Durandal with Knockoutと追加のファサードを使用して、開発の観点から物事を強化するかなり大きなASP.Net MVC Webサイトを構築しています。ASP.NetMVCとの統合は簡単です。私はそこにあるサーバー側のノックアウトのものを使用しようとすることはお勧めしません。 MVVMパターンの実力を制限するためにそれを見つけました。