2011-07-07 5 views
0

私は無料のWeb開発者です。私はいつも同じ問題に直面しています。テーブルから、またはデータベースからフェッチされ、GUI表現が必要な他のデータをどのように埋めるべきですか?データベースレスポンスを使用した表の記入に関する一般的なアプローチ

オプションは次のとおりです。

  1. ServerのすべてのGUIとデータを返します。 HTMLコードが埋め込まれています。
  2. サーバーはXML/JSONデータを返し、内部のJavaScriptでデータを入力しますか?すなわちvar gui = "<h1>" + data.title + "</h1">; $("myTitle").html(gui);
  3. サーバーにはテンプレートが埋め込まれたXML/JSONデータが返されますか? {"title":"Hello!"..some other data....., {["<h1>%d</h1>], ["<a href='#'...]}"
  4. データリクエストに隠れたDIVのテンプレートが含まれ、データを埋め込むページ?
  5. 他の方法で知りませんか?

答えて

1

簡易回答:#2。

より複雑な答え:コアで第5位

、あなたのプレゼンテーションは、サーバー側の処理から分離する必要があります。一度この画面を表示し、JSONを送り返してクライアント側に入力するシンプルなシナリオです。この表示ロジックを再利用するにはどうすればいいですか?または、私の表示ロジックがJSONに戻って来てJavaScriptが泥だらけでグロスになったらどうでしょうか?私は2つの非常に異なるものの1つを返すと、私のJavaScriptのスーパーを複雑にしたくない場合はどうなりますか?

これは、レンダリングシナリオを分割するためにさらに進んでいく必要があるときです。これは、シェルページ、コントロール、ビュー、またはフレームワークに与えたものを持つことができるときです。あなたの目標は、サーバー側のプログラミングロジックを使用してビュー/コントロールを実装し、サーバー側にレンダリングし、HTMLチャンク全体をJavaScript AJAX呼び出しに戻すことです。この大きなチャンクは、追加のスクリプトなしで直接ロードできます。

トレードオフがあります。ときにこれを使用しないでください:

  1. あなたのデータと表示がまっすぐ前方にある
  2. あなたはあなたのレンダリングされたビューは巨大です
  3. この作品に単一の時間を使います。覚えておいてください。 JavaScriptのデータをループして、セルを構築するのは、テーブルのすべてのテキストを一度に返すよりも高速かもしれません。あなたが戻って非常に変数の内容を渡している

    は、このレンダリング技術を使用しています。

  4. 表示ロジックは複雑で可変です。
  5. あなたの表示ロジックは、クライアントが知りたい/気にしたくないデータによって異なります。

#1目標:サーバー側のコードからレンダリングロジックを分離します。 HTMLをコードビハインドに入れないでください。できれば、ページスニペットをレンダリングし、すべてのHTMLをワイヤを介して返すことを考慮して、サーバーがJavaScriptではなくHTMLを生成できるようにします。

2

私にとって間違いなくオプション2です。
サーバーは、ページがデータをどのように表示しているかを正確に認識すべきではありません。
「懸念の分離」の問題として見ることができます。サーバーは要求されたデータを取得することに関わっており、それだけです。
クライアント側は、どのような方法でデータを提示するのかを決定します。

データの表示方法を変更したい場合は、前述の方法を使用する場合は、サーバー側のロジックを変更する必要があります。

オプション#2では、サーバー側を変更せずにクライアントタイプを完全に変更することも可能です(wpf/winform/whatever client)。

p.s.ちなみに、実際に素晴らしいテーブルプラグインのためにjqgridをチェックしてください。

関連する問題