2013-03-25 13 views
145

AngularJSは、インタラクティブなHTML5とモデルの結合に関して非常に強力です。一方、YiiのようなPHPフレームワークは、素早く、構造化され、安全で強力なWebアプリケーション開発を可能にします。どちらの技術も、データアクセス、反復、およびページレイアウトの高度な手段を提供します。AngularJSとPHPフレームワークを混在させるべきですか?

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

PHP(See this question)を使用してJSを生成することについては言及していません - 私はAngularJSを使用するビューを生成することを話しています。

AngularJSページは、たとえばPHP変数などから直接取得するのではなく、RESTサービスを介してサーバーと通信してデータ(See this question)を取得する必要があります。しかし、私にはあなたがPHPでの開発をより快適かもしれ思わ

+23

グレート質問です。私はこのタイプの質問のために設計されたStackExchangeの場所があることを望みます。私はPHPに慣れており、多くのデータを自分で収集するためのcURLプロジェクトを持っています。ライブラリ上のJavaScriptフレームワークは私のプロジェクトに適していると思います。私の問題はあなたのようなもので、元のプロジェクト(PHP)からどんな部分をドロップするのかといった良い練習(悪影響と悪影響)を知りたい私はこれらの会話が議論を求めることができると信じていますが、会話なしでどのように2つの言語の最良のマージに到達することができます。 – Shane

答えて

170

(例えば、メインメニューを構築したり、許可/セッションなどを扱う)PHPで別々に全体のWebアプリケーションのための「フレーム」を設計するために、より便利なようですこれにより、Webアプリケーションで最大限の可能性を活用することができます。

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

Webアプリケーションを作成するためにHTMLとJavaScriptの可能性を十分に活用するには、アプリケーションのように機能し、クライアント側のレンダリングに大きく依存するWebページを作成するには、州とプレゼンテーション。これは維持しやすく、よりユーザーフレンドリーになります。

は、私はより多くのAPI中心のアプローチでより快適な思考を得るために、あなたをお勧めします。 PHPの出力にプリレンダリングされたビューを持ち、単なるDOM操作のために角度を使用するのではなく、PHPのバックエンドにRESTFullyに作用させるべきデータを出力させ、Angularに提示することを考慮する必要があります。ビューをレンダリングするためにPHPを使用した

api/auth/

{ 
    authorized:true, 
    user: { 
     username: 'Joe', 
     securityToken: 'secret' 
    } 
} 
:同じ問題は、このようにJSONを出力することにより、API中心のアプローチで解決することができますどのように

/user/account

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

と角度にあなたが得るを行うことができ、応答クライアント側を処理します。あなたが提案した方法はメンテナンスが重要ではなく、あなたは、単一の著者ですが、私はこれがなるようAPI中心の方法に対してよりリーン小規模なプロジェクトに適しかもしれクライアント側とサーバー側の両方をブレンドする

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

consersonsのより正確な分離は、維持しやすくなります。

+2

例の簡単さ。私自身は誰もがやっているスーパー・デュパー・ベース・ログイン以上のものを探していました。 PHP/HTMLと変数を持っている場合の大きな違い​​$ name(​​){{name}}そして 'app.run(function($ rootScope){$ rootScope.name = "Ari Lerner";});'私は自分自身で、PHPが「ダイナミック」な角度のページを作ろうとしている、あるいは試みようとしていることの見開きを見つけようとしています。そしてそれを見ていないだけです。クライアントが個々の要素をロードし、テンプレートを移入/変更するのを待つ。ちょうどそのようなJavaScriptの壁を生成するPHPのアイデアに熱心ではありません。 –

+2

@ShawnRebelo 'javascriptの壁 'の意味を少し明確にすることはできますか?私は何年ものPHPレンダリングの後でAngular/JS APIの世界には新しいので、この議論は私には面白いです。 –

+0

"PHPでプレビューされたビューを出力し、単なるDOM操作のために角度を使用するのではなく..." - [新しい古い概念](http://alistapart.com/article/understandingprogressiveenhancement) 。 –

関連する問題