0

現在、エントリを表示するカレンダーを含む小さな Web アプリケーションに取り組んでいます。ページが読み込まれると、PHP によってカレンダーが生成されます。

同じページに、エントリを編集できるフォームがあります。変更するコマンドは AJAX によって送信され、その後何らかの方法でカレンダーを再読み込みする必要があります。

現在気になっているのは以下の点です。

AJAX を使用してカレンダーを更新する方法は 2 つあります。

  • 1 つは、カレンダー全体またはカレンダー エントリの要素のリロードを意味するかどうかにかかわらず、カレンダーの HTML マークアップを新たに送信することです。
    AJAX 呼び出しを介して送信されるかなりの量の (生の) データが必要になるため、これはおそらく最適ではありません。
    一方、マークアップを再度生成する同じ PHP 関数を呼び出し、それを返し、クライアント側で DOM 要素を置き換えるだけでよいため、必要な作業は約 5 行のコードです。
    これは、「簡単」に感じるので、現在私が使用している方法です。
  • もう 1 つは、JSON エンコードされた新しいカレンダー エントリのデータを送信し、JavaScript 関数を使用して既存のマークアップに必要な変更を加えることです。
    マークアップに関する多くの知識を 2 回 (PHP コードで 1 回、JS コードで 1 回) 使用する必要があるため、これも最適ではないように感じます。マークアップが何らかの形で変更されるとすぐに、この冗長なコードが問題を引き起こしていることがわかります。
    また、かなりの量のフィールド (約 10 以上) を操作する必要があることを考えると、4 ~ 5 のコードを簡単に含む、より「複雑な」ソリューションのようにも感じます。
    一方、コンテンツのみが送信されるため、送信されるデータははるかに少なくなります。

より良い解決策はどれですか? 3 番目 (または 4 番目) のオプションがありませんか?

4

2 に答える 2

1

2番目のオプションは、必ずしもコードに冗長性を含める必要はありません。

あなたの立場は、最初のページの読み込み時にPHPでカレンダーのHTMLをレンダリングしていて、Javascriptでそのロジックを複製することを避けたいからです。

これを回避する方法は、カレンダーレンダリングを完全にJavascriptに設定し、常にカレンダーデータをPHPコードからJSONとして送信することです。

これは、最初のページの読み込み時に、PHPプログラムがカレンダーの初期データセットを提供し、それがJavascript初期化関数によって入力されることを意味します(たとえば$(document).ready()、jQueryを使用している場合)。

このソリューションは、コードがすべての場合に一貫したJavascriptベースのレンダリングを使用することを意味します。

もちろん、最初のソリューションは、レンダリングを実行する一貫したコードベースも意味するため、どちらのオプションもその角度からは問題なく機能します。したがって、それが基準である場合、それらの間で選択することはほとんどありません。明らかに、オプション1がすでにコーディングされている場合は、Javascriptに切り替える正当な理由がない限り、オプション2よりも明らかに勝者です。ただし、関係する可能性のある他の基準には、同じJSONオブジェクトを使用して他の何かをレンダリングしたり、既存のサードパーティのJavascript日付コントロールにデータを入力したり、サードパーティのAPIとして提供したりする可能性があります。このような場合、JSONは柔軟性が高いため、明らかに勝者です。

ですから、それはあなた次第だと思います。そしてあなたにとって何が重要か。しかし、私が言っている主なポイントは、コードを複製することなく両方のオプションが可能であるということだと思います。

お役に立てば幸いです。

于 2012-11-07T18:15:36.223 に答える
0

それはあなたのサイトのトラフィックに依存すると思います。このサイトのトラフィックが多い場合は、後のオプションで帯域幅の量を最小限に抑えることができ、1日を通して大幅に節約できます。

帯域幅が問題にならない場合は、現在のソリューションであると私が信じる最も単純なソリューションを使用してください。これは、php関数やレイアウトをあまり制御できない場合にも最適なソリューションになる可能性があります。これは、cssとjsのみを使用している場合などです。

于 2012-11-07T18:00:02.330 に答える