2011-12-25 21 views
4

私はDjangoでこのWebアプリケーションを開発しています。厳密なWebフレームワークは重要ではありませんが、ポイントは次のとおりです。コード、データ、および実際のHTMLを素早く分離しています。しかし、さらに進むにつれて、単一のWebページを維持し、AJAXリクエストを介してユーザーの操作にインターフェイスが応答するようにしたいと考えています。今度は、AJAXリクエストからの特定の入力を期待し、文字列とデータを基本的に連結してページの大部分を構築するこれらのハンドラ関数をすべて記述しています。突然それが再び1999年です。私は手動でHTML文字列を作成しています。これはできない?AJAX入力に基づいてHTMLを構築する適切な方法

私の質問は、まともなパターン/フレームワークは何ですか...ブラウザ側でHTMLを体系的に作成するにはどうすればいいですか?私は、jQuery用のテンプレートプラグインがいくつかあることを認識していますが、そのうちの1つにコミットする前に、この問題の根本的な解決策はありませんか?

+2

私は強くクライアント側のテンプレートのいくつかのタイプを模索することをお勧めします。 (例えば、[Handlebars](http://www.handlebarsjs.com/)) –

+0

一般的に、アプリケーションをJavaScriptに完全に依存させることは悪い設計です。 JavaScriptを無効にしたユーザーの2-3%であっても、JavaScriptを無効にしてページを動作させる必要があります。これにより、ページがより多くのプラットフォームで動作するようになり、マシン上でより速く動作するようになります。また、クライアントサイドのコードで発生するバグを検出、報告、再解析することはずっと難しくなります。このようなシナリオではAJAXを使用してページを強化したり、派手な効果を追加したり、ページの読み込みなどクライアントの操作が厄介なものにならないようにすることができます。 –

答えて

1

私が以前にしたことは、私のサーバーに処理とコード生成をさせることです。負荷をクライアントから守ります。

部分(表示)を読み込んで返したり、jsonでエンコードしたりすることができます。 jsonを使用する場合は、HTMLをあなたのレスポンスオブジェクトまたはそれに類するものの中の「コンテンツ」にします。

このように、同じビューを使用できるので、コードの重複はありません。トリックはそれらを分割する方法になります。

+0

ありがとうございます。何らかの理由で、これまで考えたことはありません。ロジックとテンプレートをサーバー側に保つことができるという利点があります。もちろん、輸送されるajaxデータのサイズを膨らませることになります。圧縮を適用するのが理にかなっているのか、それとももっと深いレベルで気を配っているのかどうかは不思議です...。 – Nicolas78

+0

真剣に、どのくらい大きなビューがありますか?数kb?私はそれについて心配しないでください) –

+0

heheそれは普通の考えのタイプですが、私は「基本的な問題解決モード」で私を捕まえました;) – Nicolas78

1

html文字列を作成する代わりに、リレーショナルデータベースのデータを保持するjavascriptクラスの内部にjavascript domオブジェクトの配列を保持しておき、ユーザーインタラクションに基づいてAJAXを使用してそれらを構築/サイクルするだけですか?これは、動的プリロード(1つのページを選択するとすぐにフルサイズの画像を表示できるようにする)を使用して、1ページに約500枚のフォトギャラリー(セットに分かれています)を維持する方法です。

1

また、この1999年のことを感じて、jQuery tmplのために解決しました。 モデルとビューを分離して、ビジネスロジックに集中する時間を増やすことができます。テンプレートを定義するには、ドキュメント本文内の任意の場所にtext/x-jquery-tmpl型のscript-tagを使用し、そのIDで指定して使用します。

関連する問題