web-dev-qa-db-ja.com

2つのMVCフレームワークを互いに戦わせることなくチーム化するにはどうすればよいですか?

CRUDベースのWebプロジェクトを作成していて、サーバー側のMVCフレームワーク(CodeIgniterやLaravelなど)とクライアント側のMVCフレームワーク(AngularJSなど)を併用することを考えています。これはかなり一般的なアプローチですか?結局のところ、サーバー上で何かが必要であり、クライアント上でもMVCを実行することでアプリケーションを強化できることは明らかです。しかし、同じプロジェクトの2つのMVCフレームワークは、互いに邪魔になり、過度の複雑さと繰り返しにつながると思います。

1つをクライアントで使用し、もう1つをサーバーで使用するときに、両方のMVCフレームワークを最大限に活用するにはどのようなアプローチまたはアーキテクチャが役立ちますか?

2
SASM

LaravelとAngularJSは実際には非常にうまく連携しています。それに関するLaracastsの良いビデオといくつかの良い記事がオンラインにあります。

一般に、肥大化と多くの冗長性を増加させるため、1つのプロジェクトで複数のMVCフレームワークを使用することは望ましくありません。平均的なPHP MVCフレームワークには、ORM、テンプレートエンジン、ルーターなど、必要なコンポーネントは1つだけです。実際、2つを使用すると、おそらく複雑さが増し、競合が発生します。

ここでの例外は、サーバー側フレームワークとクライアント側フレームワークの場合のように、フレームワークが明確に分離されている場合です。どちらのフレームワークも実際にはまったく異なることをしています。

ただし、LaravelとAngularJSの使用を組み合わせる場合は、Laravelの機能のすべてを使用しているとは限りません。推奨される戦略は、Laravelのリソースルートを使用してREST AP​​Iに似たものを実装し、すべての対話をAJAX AP​​I呼び出しとして扱うことです。

つまり、V of Laravelを実際に使用することはありません。つまり、ブレードでのビュー。 (おそらくアプリを最初にロードするためのレイアウトは別として)

「Laravel and AngularJS」の簡単なグーグルは、大量の記事を返しますが、おそらく最良のリソースはこのサンプルプロジェクトです。

Githubの例: https://github.com/bktz/Laravel-4-AngularJS-Starter-Site

注目すべき記事はこれですが:

http://scotch.io/tutorials/php/create-a-laravel-and-angular-single-page-comment-application

そのようなアプリの提案された構造と、前述のリソースルートについて説明します。

8

クライアント側でAngularJSを使用し、バックエンドでLaravelを使用する場合は、最初にアプリケーションがロードされて稼働する開始ページを作成します。そして、その周りでJSONサービスを構築します(laravelまたはその他のいくつかのコントローラメソッドで、応答と要求を処理するCRUD)。

さまざまなオブジェクト(テーブル?)がたくさんある場合は、それぞれに開始ビューを作成します。

それはすべて異なるレイヤーです。クライアント側のMVC js-frameworkはオプションです。アプリケーションの構造化に大きく役立ちますが、フレームワークなしでアプリケーション構造を構築することもできます。しかし、それはあなた次第です。これらのテクノロジーを使いたくなった場合は、先に進んでコーディングを開始してください。

1
marko

ベストプラクティスでは、MVCとangularJSの両方を使用しているときに、サーバーからデータを取得するためにサーバー側でMVC Web APIを使用する必要があり、クライアント側では、JSONデータをHTMLコントロールにバインドするためにAngularjsフレームワークを使用する必要があります。

クライアント上:クライアント上で、AngularJSを使用して、Web APIの呼び出しからローカル検証まですべてを処理しました。 Web上の最新のプッシュによってプッシュされている「即時」応答をユーザーに提供します。ページを動的または比較的静的にすることができます。関心の分離を使用しているアーキテクチャを使用することで、RESTful APIをサポートするものでバックエンドを置き換えることができます。

サーバー上:クライアントにデータサービスを提供するために、一連のRESTful Web APIを構築するのが最も簡単であることがわかりました。また、サーバーで検証を実行して、だまされないようにします(Webページ以外のクライアントを使用してデータを送信します)。また、必要なすべてのライブラリーをロードするために、Webページを(コントローラーと最小限のビューを使用して)組み立てます。ビューから最終的なHTMLへの変更がほとんどないWebページを構築しているので、AngularJSを他のものに置き換えることができるはずです。

1

免責事項:私はPHPに慣れていません。

  • ASP.NETの場合、ASP.NET MVC(+ Web API)とAngularJSを一緒に使用するのが一般的です。

ルーティングは問題にならないはずです。

  • すべてのルーティング要求は最初にAngularJSによって受信されます。
  • Angular JSからのサービス呼び出しのみがサーバー側MVCに到達します。

通常、サーバーサイドMVCはすべてのルートの認証/承認を処理し、それ以外はすべてAngularJSアプリケーションによって処理されます。

0
Darshan Joshi

クライアント側のMVC/MVVMフレームワークは、サーバー側で使用しているフレームワークから完全に分離されています。 AngualJSのバックエンドがないと、たとえば、アプリケーションでそれほど多くの機能を利用できません。バックエンドはNodeJS appまたはLaravelまたはZend Frameworkまたはその他の何でもかまいません。

あなたのアプローチは、サーバー側で[〜#〜] mvc [〜#〜]フレームワークを使用し、クライアントでMVC/MVVMを使用することは完全に有効です。しかし、あなたの質問はその意味で広範であるので、ここで言及する一般的なベストプラクティスはありません。

0
Mahdi