4

現在修正中のキオスクとして機能する比較的単純な Web アプリがあります。私の当初の目標は、それを機能させることだけでしたが、今はよりエレガントなアプローチを実装しようとしています.

基本的な背景情報:

  • コンテンツ - すべてのコンテンツは php 経由でデータベースから取得されます - ajax 呼び出しに応答するか、php でコンテンツを直接エコーします (ほとんどのコンテンツ)。この部分はすでに修正済みで、まだ完全ではありませんが、かなり効果的/柔軟です。
  • キオスクの機能 - クライアントは、キオスクを使用して 1 つまたは複数のアンケートに回答します。フォームが検証に合格すると、データが送信されます。それが最後の調査である場合、セッションは終了します。さらに調査がある場合は、引き続き調査を行います。

問題:キオスクの動作を制御するjQuery イベント ハンドラーがごちゃごちゃし ています。基本的に、この動作は、キオスクの状態に基づいて、DOM に既に存在する要素を表示/非表示にすることで構成されます。

  • 指示の切り替え
  • ログアウト画面の切り替え(アンケートの早期終了)
  • アンケートの次/前の質問に移動
  • 自動ログアウトの警告を表示するアイドル タイマー (アラートではなく表示/非表示のみ)
  • 十分に回答されていない場合は、見逃した質問を表示する
  • 単純な検証に合格した場合にフォームを送信する

調査を追加すればするほど、遭遇する特殊なケースが増え、jQuery がより厄介になるように見えます。ラジオボタンだけで構成された調査は簡単ですが (コードはまだ洗練されていません)、質問パイピング (他の質問に依存する質問) とテキスト応答があるものは、できれば特別なケースとして扱っているようです。 jQuery に対してよりモジュラー/OOP アプローチを採用します。

検討した...

  • プロトタイプ
  • jQuery UI ウィジェット ファクトリ
  • 独自の jQuery プラグインの作成
  • 自分の JavaScript クラスを書く
  • ノックアウト.js
  • 現在のjQueryアプローチを継続し、クリーンアップするだけです

あなたの専門知識を提供し、私のプロジェクトのコンテキストに基づいて正しい方向に私を向けてくれてありがとう.

4

1 に答える 1

0

Backbone.js は、この問題を解決する優れた方法です。このアプローチは私の問題を解決します...

  • ビューからモデルを分離する
  • 継承を利用して、標準の動作を持つ基本クラスとサブクラスを作成して、一部の調査要素の特別な動作を実装できます。
  • Backbone.js は非常に軽量で、「他とうまく連携する」
于 2012-06-22T19:06:24.117 に答える