web-dev-qa-db-ja.com

AngularJSとLaravelで使用するアプリケーション構造は何ですか?

私は最近、大規模なソーシャルネットワークを構築し始め、自分の構造は良いと思いましたが、このロジックをうまく構築できなかったことがわかりました。

ビューをAngularJS(悪い考え)と混ぜて、ブレードの拡張をスキップしましたが、ブロックとサイドバーのインクルードをたくさん使用しているため、お尻が痛くなりました。

現在、Angularを使用してフォームの検証を処理しているだけですが、実際には、すべてのサイトページでajax、データプルなどが必要になります。

ネットを検索していたところ、angularビューはパブリックフォルダーに保存されていますが、すべてのページでangularを使用するので、良いアイデアです。すべてのビューを公開して保存し、バックエンドとしてLaravelを使用しますか?

これはばかげた質問だと思いますが、少し混乱しています。

ヘルプのヒントをいただければ幸いです。

30
user1130272

これらのフレームワークを組み合わせるには、次の2つの方法があります。

  1. クライアント側のレンダリングのみ

    これはより簡単な方法であり、ほとんどのWebアプリケーションで使用されます。この場合、JSONを返すAPIエンドポイントとしてLaravelを使用します。Angularは、$httpまたは$resourceサービスを介してこのデータをクエリし、テンプレートをコンパイルできます。これはパブリックフォルダに保存します。Angularテンプレートはディレクティブといくつかの{{var}}ステートメントを含む単なるHTMLです。このようにAngularはすべてのルーティングも行います。

  2. サーバー側とクライアント側のレンダリング

    これは、Laravelがルーティングを実行し、サーバー側でいくつかのテンプレートをコンパイルするという難しい方法です。Angularは、サイトでの一部の対話にのみ使用します。たとえば、jQueryを使用する方法です。このアプローチの利点は、ユーザーが最初にサイトにアクセスしたときに完全なHTMLを取得するため、パフォーマンスが向上することです。欠点は、ロジックを2回記述しなければならず、一部を使用できないことです。 Angularの機能の。

20

Angularの機能のほとんどを実際に活用するには、シングルページアプリケーションを作成する必要があります。これは、Web APIを介してサーバーと通信し、any Laravelサーバー側テンプレートがないことを意味します。

そうです、2つの分離されたアプリケーションを作成する必要があります。 Angularを使用する1つのクライアント側と、Web API、できればRESTfulを公開する1つのサーバー側。

このようにして、クライアント側のJS/HTML/CSSからFlashまたはSilverlightなどに切り替えたり、Laravel/PHP/MySQLから.NETまたはNodeJSまたはMeteor/MongoDBに切り替えたりすることができます。

13

Sergiuは正しいですが、場合によってはLaravelは、クライアント側のテンプレートでは達成できない利点を提供します。これは、SEOとWCAG(アクセシビリティ)に関連しています。

AngularJSはDOM操作によってコンテンツをレンダリングするため、検索エンジンは、これらの操作が完了した後に表示されるコンテンツを判別できません。これはスクリーンリーダーにも当てはまります。このため、一部のコンテンツはサーバー側のビュー構造を介して配信する必要があります。そのため、WordpressおよびLaravelには長く健全な未来があります。

バックエンドで、またはSEOとWCAGが重要でない場合、AngularJSやEmberで使用されるものなど、データバインディングクライアント側テンプレートは、より多くの開発者がそれらの使用方法を学ぶにつれて、ますます使用されるようになります。

ビューコンストラクトにAngularJSまたはLaravelのどちらを使用するかについては、両方の使用方法を学び、最も適切な場所に適用するのが最善です。

6
Peter Drinnan