164

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

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

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

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

4

1 に答える 1

182

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中心の方法に傾倒します保守が容易になります。

于 2013-03-25T22:06:45.003 に答える