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


161

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

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

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

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


28
すばらしい質問です。この種の質問のために設計されたStackExchangeの場所があったらいいのにと思います。私はPHPに慣れており、自分で多くのデータを収集するためのcURLプロジェクトを持っています。ライブラリを介したJavaScriptフレームワークが私のプロジェクトに適していると思います。私の問題はあなたの問題と似ています。元のプロジェクト(PHP)からどの部分を落とすか(良い面と悪い面)とは何かを知りたいのです。会話なしの2つの言語の最適な統合。
シェーン

PHP / Jqueryに変換し直すAngularJSプロジェクトがいくつかあります。私は、さまざまなモバイルデバイスやブラウザーで動作するように角度をつけることに関して、無限の問題を抱えていました。AngularはSEOが難しく、グーグルはその友達ではありません。上位にランク付けされたサイトが角型に切り替わったためにSERPSが消滅するのを見てきました...
HappyCoder 2018年

回答:


180

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

実際にPHPでパーシャルとビュー全体をレンダリングすることは可能ですが、お勧めしません。

HTMLとJavaScriptの可能性を最大限に活用してWebアプリケーション、つまりアプリケーションのように機能し、クライアント側のレンダリングに大きく依存するWebページを作成するには、状態と表示の管理に関するすべての責任をクライアントに維持させることを検討する必要があります。これはメンテナンスが簡単になり、よりユーザーフレンドリーになります。

よりAPI中心のアプローチでより快適な考え方を身に付けることをお勧めします。PHPに事前レンダリングされたビューを出力させ、単なるDOM操作にAngularを使用するのではなく、RESTFullyに作用するデータをPHPバックエンドに出力させ、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中心の方法に傾いています。メンテナンスが容易になります。


2
簡単な例に。私自身は、誰もができる非常に基本的なログイン以上のものを探していました。<td> {{name}} </ td>にPHP / HTMLおよび変数<td> $ name </ td>があり、次に 'app.run(function($ rootScope){$ rootScope.name = "アリラーナー";}); ' 私自身、PHPに「動的な」Angularページを作成させようとする、またはしようとすることの利点を見つけようとしています。そして、それを見ていないだけです。クライアントに個々の要素の読み込みとテンプレートの追加/変更を待機させる。PHPがそのようなJavaScriptの壁を生成するというアイデアにはまだ熱心ではなく、簡単に表示できます
Shawn Rebelo

2
@ShawnRebeloどういう意味かわかりますa wall of javascriptか?長年のPHPレンダリングの後、私はAngular / JS APIの世界に慣れていないので、この議論は私にとって興味深いものです。
Dan Nissenbaum、2015

「PHPに事前にレンダリングされたビューを出力させるのではなく、単にDOM操作にAngularを使用する...」- 新しい概念を紹介します。
反逆の怒り

それはまさにそうあるべきであり、バックエンドからの安らかなAPIは任意の言語にすることができ、フロントエンド用の角度付きアプリはバックエンドに関係なく機能することができます。
Amir Savand 2017年

3
理解できないのは、プレースホルダー付きの汎用ページをロードしてから、一部のパーツを1つ以上の非同期リクエストでロードして、ユーザー/認証データのような最初のページのロードですでに持っていたものを取得する必要があるのはなぜですか?
トビア2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.