web-dev-qa-db-ja.com

AngularJSとPHPフレームワークを混在させる必要がありますか?

AngularJSは、インタラクティブなHTML5およびモデルバインディングに関して非常に強力です。一方、PHPのようなYiiフレームワークは、迅速で、適切に構造化された、安全で強力なWebアプリケーション開発を可能にします。どちらのテクノロジーも、データアクセス、反復、ページレイアウトのための高度な手段を提供します。

これら2つのアプローチ(クライアント側とサーバー側の「ページ設定」)を組み合わせることは良い習慣ですか、それともインタラクティブでシームレスなHTML5 AJAX Webアプリケーションの意味に反しますか?

PHPを使用してJSを生成することについて話しているのではありません( この質問を参照 )-AngularJSを利用するビューを生成することについて話している。

また、AngularJSページは、RESTサービスを介してサーバーと通信してデータを取得する必要がある(またはできる)ことも知っています( この質問を参照 )。たとえば、PHP変数。しかし、私にとっては、PHPでWebアプリケーション全体の「フレーム」を個別に設計する方が便利なようです(たとえば、メインメニューを作成したり、承認/セッションなどを処理したりします)。

156
Dani

PHPでの開発はより快適に思えるかもしれません。これにより、Webアプリケーションの可能性を最大限に活用することを控えることができます。

PHPで部分ビューと全体ビューをレンダリングすることは確かに可能ですが、お勧めしません。

HTMLとjavascriptの可能性を十分に活用してWebアプリケーション、つまり、アプリケーションのように動作し、クライアント側のレンダリングに大きく依存するWebページを作成するには、クライアントに状態とプレゼンテーションの管理のすべての責任を維持させることを検討する必要があります。これにより、メンテナンスが容易になり、より使いやすくなります。

よりAPI中心のアプローチでより快適に考えることをお勧めします。 PHPが事前にレンダリングされたビューを出力し、単なるDOM操作にangularを使用するのではなく、必要なデータをPHPバックエンドに出力させることを検討する必要がありますRESTFullyに基づいて行動し、Angularを提示します。

PHPを使用してビューをレンダリングします。

/user/account

if($loggedIn)
{
    echo "<p>Logged in as ".$user."</p>";
}
else
{
    echo "Please log in.";
}

次のようなJSONを出力することにより、API中心のアプローチで同じ問題をどのように解決できるか:

api/auth/

{
  authorized:true,
  user: {
      username: 'Joe', 
      securityToken: 'secret'
  }
}

Angularでは、getを実行し、応答クライアント側を処理できます。

$http.post("http://example.com/api/auth", {})
.success(function(data) {
    $scope.isLoggedIn = data.authorized;
});

クライアント側とサーバー側の両方をブレンドするために、あなたが提案した方法は、メンテナンスが重要ではなく、あなたが一人の著者である小規模プロジェクトに適しているかもしれませんが、私はこれがより適切な分離と意志のAPI中心の方法に傾いています保守が容易になります。

177
Kenneth Lynne