Ajax / UI JSフレームワーク(ext、jquery-ui)とMVC PHPフレームワーク(zend、symfony)を組み合わせることは良い考えですか?
-
05-07-2019 - |
質問
これは非常に一般的な質問であることがわかっていますが、決定的な答えを探しているわけではないと思います。 PHPフレームワークが初めてなので、頭を悩ませることができません。
特にUI拡張を備えたJavascriptフレームワークは、設計からJSコードを分離することにより、MVCに似たアプローチを持っているようです。バックエンドで追加のMVCフレームワークを使用すると混乱するようです。
これは主にAJAX駆動型アプリケーションで一般的に行われていますか?受け入れられている/一般的な方法はありますか?
解決
Zend Frameworkアプリにどのように適合するかを示す簡単な例(これは数か月前に書いたデモアプリからのものです):
- MCVフレームワークを使用して、完全に機能するサイトを構築します(javascriptなしで動作します)。
- コントローラを変更して、「通常の」リクエストとAJAXリクエストの違いを理解します(Zendのコンテキスト切り替えにより、これが簡単になります)。
- Javascript(私の例ではjQuery)を追加して、リンクをAJAXイベントにきれいに置き換えます。
最終的に、PHPアプリは、AJAXリクエストにはAJAXレスポンス(帯域幅の削減、処理の削減、JSONまたはHTML 'スニペット'のみ)が必要であることを知っていますが、通常のリクエストにはページ全体を生成する必要があります。
基本的に、レイアウト全体を処理することなく、AJAXを使用して 'view'テンプレートを要求(または更新、またはデータを追加)するだけです。 Zend Framework コンテキストスイッチアクションヘルパーは、これがより理にかなっているかもしれません。
コンテキストの切り替えは、HTML / XML、CSVなどのさまざまな形式で要求を利用できるようにするのに効果的であることを言及する価値があります。
他のヒント
これは、MVCからの次の論理的なステップです。既にデータアクセス(モデル)、ビジネスロジック(コントローラー)、出力(ビュー)を分離しています-動作をマークアップから分離しているだけです。
私の経験では、必要な情報をJSONまたはXMLとして返すようにビューを変更するだけでよいため、AJAX機能で非常にうまく機能します。
PHP MVCフレームワークはJSフレームワークにバンドルされているため、非常に良いアイデアです:
- Zend には Dojo が付属しています
- Symfony が付属 プロトタイプ および script.aculo.us
- CakePHP には プロトタイプ および script.aculo.us または jQuery (将来のリリース)
リンクの更新、ありがとう" Exception e"。
個人的には、jendでZend(MVCおよびZendフレームワークの他の側面)を使用しており、非常にうまく機能します。 htmlページからのすべての操作がjquery(ajax)を介して行われるわけではないため、標準のMVCアーキテクチャを強くお勧めします。確かに、アーキテクチャのレイヤー(モデルとビューを分離する)が必要であり、jqueryは(少なくとも私にとっては)追加の「機能」です。非同期でMVCを実行できること。
バックエンドで追加のMVCフレームワークを使用すると混乱するようです。
それについて心配する必要はありません。たとえば、開発中に独立してzendフレームワークとextjsを使用できます。これらは実際には別個の製品です。これらのレイヤー間の依存関係はシンプルに保つべきです 。心配する必要はありません。
カップリングが低いため、サーバーアプリからデータをクエリし、クライアント側で必要なことを行う手段を設定するだけです。これらのシステム間の境界線は単純であり、混乱することはありません。
Extjsには実際にはmvc構造がありません。定義済みの豊富なコンポーネントを提供します。これらのコンポーネントを何らかの構成で接着し、データを取得できるサーバーのURLをセットアップします。
どのようにしてzend mvcをajaxに応答させるのですか? zfに関するプレゼンテーションを表示することをお勧めします↔ zfのプロジェクトリーダーのajax 。