2

私は通常クリエイティブなギャルですが、今のところ良い解決策を見つけることができません。JavaScriptベースとサーバーサイドの両方で生成されたHTML(フォーム行やテーブル行など)がありますが、どちらの場合もまったく同じです。これは、ページを開いたときにサーバー側で生成され(Googleの場合はサーバー側のままである必要があります)、AJAXによって生成され、ライブ更新を表示したり、新しい空の行でフォームを拡張したりします。

問題は次のとおりです。HTML生成ルーチンは現在2回存在しており、DRY(繰り返してはいけません)を知っていますか?何かが変わるたびに、2つの場所を編集する必要がありますが、これは私の優れたソフトウェアのアイデアにぴったりではありません。

JavaScriptベースとサーバーサイドのHTML生成を組み合わせるための最善の戦略は何ですか?

PS:サーバーサイド言語は常に異なります(PHP、RoR、C ++)。

PPS:Node.JSの答えを教えてはいけません、私は自分でそれを理解することができました;-)

4

5 に答える 5

1

JavaScriptベースとサーバーサイドのHTML生成を組み合わせるための最善の戦略は何ですか?

乾いた状態を維持したい場合は、それらを組み合わせようとしないでください。サーバー上でのみ(明らかにSEOに適したオプション)、またはクライアント上でのみHTMLを生成することに固執します。

于 2011-04-12T20:21:44.573 に答える
1

RubyonRailsソリューションは次のとおりです。

すべてのモデルには独自のパーシャルがあります。たとえば、モデルの投稿とコメントがある場合は、_post.html.erbと_comment.html.erbになります。

「render@post」または「render@comment」を呼び出すと、RoRはオブジェクトのタイプを調べて、使用するパーシャルを決定します。

これは、多くの異なるビューで同じ方法でオブジェクトを赤くすることができることを意味します。
つまり、通常の応答またはAJAX応答では、常に「render@post」と呼びます。

編集
サーバーに接続せずにJSでレンダリングしたい場合(たとえば、別のサーバーなどからデータを取得する場合)、前述の方法でJSテンプレートを作成し、クライアントに送信してから、クライアントは、そのテンプレートを使用して新しいオブジェクトをレンダリングします。JSテンプレートプラグインのようにこれを参照してください:http://api.jquery.com/category/plugins/templates/

于 2011-04-12T20:23:50.550 に答える
1

HTMLを生成するサーバーハンドラーを作成します。ページを開いたときにサーバーからそのコードを呼び出し、ライブ更新を行う必要がある場合は、そのハンドラーに対してAJAXリクエストを実行して、クライアントでコードを繰り返す必要がないようにします。

于 2011-04-12T20:25:09.550 に答える
0

サーバー上でHTMLを生成し、それを返すページを作成します。例:

http://example.com/serverstuff/generaterows?x=0&y=foo

サーバー上で必要な場合は、そのリンクにアクセスするか、リンクにアクセスするサブルーチンを呼び出します。クライアントで必要な場合は、AJAXを使用してそのリンクにアクセスすると、同じサーバーコードが呼び出されます。

それとも私は何かが足りないのですか?(「AJAXによって生成された」とはどういう意味かわかりません)。

あなたが2つの異なる言語を持っているなら、私は別の解決策を見ません。PHP / RoR /何でもJavaScriptコンパイラーを使用している(つまり、ソースを1つの言語で記述し、他の言語で自動的に生成する)か、一方が他方の言語で読み取る出力を生成します。

于 2011-04-12T20:23:55.153 に答える
0

行/データなしでページをロードします。

次に、Ajaxルーチンを実行して、ページの読み込み時に初めてデータをフェッチします

その後、必要に応じて、またはコードで決定されたとおりに、更新/新しいレコードをフェッチします。

于 2011-04-12T20:38:23.803 に答える