AngularJSとASP.NET MVCの両方を使用する必要がありますか?


58

私はAngularJSとASP.NET MVCを学び始めましたが、同じプロジェクトで両方を一緒に使用する理由がわかりませんか?

両方ともMVCフレームワークではありませんか?同じアプリケーションで両方を使用する必要がありますか?どちらかではありませんか?

回答:


74

単一ページアプリケーション(SPA)を構築している場合、おそらくASP.NET MVCの「MVC」は必要ありません。ビュー、特に動的ビューは、クライアント側で配信/操作される可能性があります。角度はそれをうまく処理します。

ただし、100%SPAは必要ありません。じゃあ何?ある代わりに10ページが、10ページの想像非常に動的。ユーザーがログオンすると、右側の隅に小さなユーザーバッジが表示されます。それは動的ではありません。ユーザーの「スコア」や最新のセルフィーなど、気の利いたものがいくつか表示されます。気の利いたものをキャッシュして、簡単に取得できるようにします。これで、2つの方法でこれを実行できます。クライアント側のMVC純粋主義者であれば、他のすべてのデータと同様に、最初のHTMLペイロードが配信された後にバッジデータを取得するだけです。しかし、多分あなたは純粋主義者ではありません。たぶんあなたは純粋主義者の反対でしょう。たぶんあなたは不純物主義者です。したがって、最初のHTMLを配信する代わりに、サーバーにポストバックするJavaScriptを配信し、JavaScriptを介して投稿してバッジデータを取得し、最終的にクライアント側MVCを介してそのデータをビューにマージします。それを最初のHTMLとして。最初のHTMLが配信されたら、一般的なクライアント側のMVCのふざけた作業に進みます。

だから...サーバーとクライアントのMVCは、2001年に混乱していたコードを整理する便利な方法です。どちらを選択する必要はありません。両方を選択できます。確かに、その最初のHTMLが配信された後にやればやるほど、サーバー側のMVCは必要なくなります。それでも、必要な場合はそれがあります。たとえば、私は外部のAngularテンプレートが実際には.NET MVC ActionResultであるASP.NET MVC / Angularアプリケーションに取り組みました。つまり、サーバーコントローラーはデータをビューにマージし、テンプレートとしてAngularに配信し、Angularのコントローラーはデータをビューにマージできます。私はこれが良いアイデアだと言っているわけではありませんが、MVCの1つの形式が他の形式を時代遅れにしないことを示しています。

さらに、Angularのデプロイ方法に関係なく、初期HTML、テンプレート、そして最も重要なデータを配信する方法が必要になります。簡単にするプラットフォームを使用してみませんか?多くの機能がありますが、.NET MVCは前兆ではありません。前にも言ったように、初期HTMLおよび外部AngularテンプレートをMVCアクションの結果にすることができますが、さらに良いことに、.NETのWeb API使用してデータを配信できます。Web APIはアプリコットのコンポートと同じくらいおいしいです。

要約:MVCは単なるパターンです。任意の数の物理層でそのパターンを使用できます。使い切ることはできません。理にかなっている場合は自由に使用してください。それに、AngularはとにかくMVCではないかもしれないので(これらのことを気にする人は言う)、名前に「MVC」を含むツールで自由に使用してください。地獄、それがMVCであっても、必要に応じて混ぜ合わせてください。


3
素晴らしい反応。説明ありがとうございました+1
ナタリー

たとえば、データを提供しているWeb APIがあり、このデータをグリッドに表示したい場合、AngularまたはMVCを使用してループとテンプレートを実行しますか?どの方法を使用してWeb APIサービスを呼び出しますか?プロジェクトの最初からどの方向に進むかをどのように決定しますか?
ナタリー

1
@NatalieデータがWeb APIからのものである場合、クライアント側で取得している可能性があります。これは、.NET MVCではなく、Angularでバインドしていることを意味します。明示的にループしません。ngRepeatを使用して、グリッド/テーブルにデータをバインドします。データを取得するには、おそらく$ httpモジュールを使用して、Web APIエンドポイントを呼び出します。どのアプローチを使用するかを決定することに関しては、それは風変わりです。白黒の答えはありません。あなたは本能を実験し、評価し、従わなければなりません。
スキャントロジャー

...注意の一言。Angularやその他のフルサービスJavaScriptフレームワークを使用したことがない場合は、ロープを学ぶのに苦労する必要があります。それらは必ずしも簡単ではありません。ただし、長期的にはあなたの生活が楽になることを保証できます。頑張ってください。それにこだわります。あなたは素晴らしいことをします。
スキャントロジャー

1
@ScantRoger謝罪しますが、あなたの答えは私のために物事を明確にしなかった。MVCサーバー側フレームワークを使用している場合、Viewは不可知ですが、Angularをどのように結び付けるのですか?サーバー(Web API)には既にモデルとコントローラーの定義が含まれています。したがって、Angularを使用すると、MVCが再び課せられます。結局、MCVCMになってしまうのでしょうか...?(モデル&コントローラの両方のクライアント側とサーバ側で定義)またはである私はすでに私のWeb APIのためのMVCフレームワークを使用している場合、私は、そのような角度などのクライアント側MVCフレームワークを使用して、すべきでない理由は
アブドゥル

17

ASP.NET MVCはサーバー側のフレームワークです。どのJavaScriptライブラリを使用してもかまいません。AngularJSはクライアント側のライブラリであり、サーバー側のテクノロジーがWebサイトを強化するかどうかは関係ありません。Python、ASP.NET MVC、またはディスクに直接格納された静的なHTMLファイルの単純な束でもかまいません。

ASP.NET MVCとAngularJSは両方とも互換性があり、それらを一緒に使用するプロジェクトがたくさんあります。

両方を使用する必要がありますか?あんまり。プロジェクトのニーズに完全に依存します。

  • Webサイトが動的な場合、サーバー側のスクリプトを使用する必要があります。ASP.NETを使用できますが、AngularJSを使用しているという事実は、サーバー側のコードをより多くのMVCにしないでしょう。サーバー側アプリケーションをMVCとして構成できるようにしたい場合は、ASP.NET MVCを選択します。

  • 同様に、ASP.NET MVCを使用しているという事実は、クライアント側コードの構造について何も意味しません。すべてのJavaScriptを、構造について何も考えずに1つのファイルに入れて、それで満足することができます(プロジェクトが成長し始めるまで)。ここでも、AngularJSは、クライアント側でアプリケーションを構造化する方法として提示されています。


サイドノート:質問ASP.NET MVC 3にタグを付けました。これは、維持する必要があるレガシープロジェクトであるか、過去4年間更新されなかったレガシーサーバーでアプリケーションをホストするときに特定の制約がある場合を除き、ASPを使用できます代わりに.NET MVC 4または5。


1
おかげでMainMa。AngularJSはクライアント側であり、MVCはサーバー側であることを認識しています。また、ハンドルバー、knockoutjsなどの他のライブラリはMVC.NETで使用でき、Angularはphp、javaアプリケーションで使用できることも認識しています。両方が「MVC」である同じことを行いますが、一方はクライアント側で、もう一方はサーバー側であるため、両方を一緒に使用する理由は何ですか?クライアント側とサーバー側でMVCフレームワークを混合する理由 Angularアプリケーションだけのアプリケーションはできませんか?または、MVC.netアプリケーションのみのアプリケーションですか?
ナタリー

@ナタリー:なるほど。回答を編集して、それに関する詳細情報を提供しました。短い回答として、サーバー側とクライアント側の両方で特定の構造を持つことが理にかなっているプロジェクトで、これら2つのフレームワークを混在させることができます。
アルセニムルツェンコ

たとえば、データを提供しているWeb APIがあり、このデータをグリッドに表示したい場合、AngularまたはMVCを使用してループとテンプレートを実行しますか?どの方法を使用してWeb APIサービスを呼び出しますか?プロジェクトの最初からどの方向に進むかをどのように決定しますか?
ナタリー

私は同じ質問を心に抱いています。asp.net MVCを使用する理由がまったく見つかりませんでした。サーバー側のAsp.net Web APIとクライアント側のAngularで十分だと思われます。しかし、私は最初に考えました。Web API =データアクセスレイヤー、Asp.Net MVC =ビジネスロジックレイヤー、Angular = UIレイヤー。しかし、Angular側からはWeb API呼び出ししか行えないため、Asp.Net MVCサーバー側は使用できません。Asp.Net MVCを使用する必要がある理由の良い例が必要だと思います。
サリム

9

Visual Studioを使用している場合、アンギュラーおよびMVC Web Apiコントローラーを含む新しい「シングルページアプリ」MVC Webサイトテンプレートがあります。

MVCサーバー側コードは、角クライアント側コードが呼び出すためのJSONエンドポイントを提供するため、これはうまく機能します。

さらに、MVCコントローラーを使用して、単一ページアプリの基本的なHTMLビューを提供できます。これにより、サーバー側での生成、承認、リダイレクト、エラー処理などの能力が得られます。

多くの場合、単一のページアプリ、さまざまな環境、さまざまな言語のエンドポイントURLなど、またはサーバー側で簡単に実行できる奇妙な認証ページでさえ、少量のサーバー生成html / javascriptが必要になります。


1
VS 2015 CEで標準のSPAテンプレートを作成すると、スクリプトフォルダーにブートストラップ、jquery、ノックアウト、応答、およびサミーが表示されますが、角度は表示されません。何か不足していますか?
TK-421

2

3年後、ASP.NET Web APIを使用してデータを提供し、Angular(js以降)を使用してクライアント側でアプリを構築します。静的サイトを作成している場合は、ASP.NET MVCを使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.