16

ノックアウト js とバックボーンを使用して、単一ページの JavaScript アプリケーションを作成しています。私はバックボーン モデルとノックアウト ビュー モデルを使用していますが、jQuery UI ウィジェット ファクトリを使用して作成した多くの UI コントロールもあります。

私の質問は、私の jQuery ウィジェットでコードをより適切に構造化する方法です。ノックアウト/バックボーン/エンバーなどのフレームワークを使用すると、メイン アプリに MVC 型のパターンを簡単に実装できますが、ウィジェットの開発となると、DOM 要素を出力して操作する大量のコードが必要になります。jquery を使用すると DOM のクエリが簡単になるため、これをテストすることはできますが、コードはかなり見苦しいです。理想的には、ウィジェットにも MVC パターンが必要です。

これを支援するために設計されたライブラリやフレームワークはありますか?

4

5 に答える 5

1

要するに:

  • ウィジェットはできるだけ MVC のビューの一部として保持してください。可能な限りデータを委任します。
  • アプリ内にあるという素因を持ってウィジェットを作成しないでください。ウィジェットを島のように扱います。
  • イベントを使用して、ウィジェットから渡されるデータを処理します。それを照会しないでください。
  • コントローラーをクリーンに保つために、ウィジェットで「Tell, Don't Ask」パターンを使用する

理想的には、JQuery はアプリケーション全体の MVC パターンの V 部分です。ユーザーがウィジェットを操作したときにデータを保持して返す必要があるウィジェットの場合は、イベント処理が最適です。何かを行うためにウィジェットの状態を照会する必要がないように、ウィジェットで開発の「Tell, don't ask」パターンを使用します。これにより、多くの問題が解決されるはずです。

于 2012-05-18T15:10:32.997 に答える
0

フレームワークは役に立ちますが、原則はフレームワークがなくても解決できます。私は通常、私が探している分離を提供する自己実行型の匿名関数内のウィジェットおよび/またはプライベート関数でメソッドを構築します。ウィジェットが大きくなった場合は、レイヤーを別のファイルに分割すると効果的ですが、これにより最終製品の使用が難しくなる可能性があります。

于 2012-05-08T04:38:42.663 に答える
0

私は MVC の "V" の部分だけを手伝うことができます :) DOM を作る、私は各クラスが親のプロパティを継承する OOCSS の概念を好みますが、それらを一緒に統合することができます。

OOCSS

<div class="mod"> 
    <b class="top"></b>
    <div class="inner">
        <div class="bd"></div>
    </div>
    <b class="bottom"></b> 
</div>

https://github.com/stubbornella/oocss/wiki/Module

jQuery UI

<div class="ui-widget ui-widget-content">
  <div class="ui-widget-header"></div>
  <div class="ui-widget-content"></div>
</div>

http://jqueryui.com/docs/Theming/API

OOCSS と jQuery UI の混在

<div class="mod ui-widget ui-widget-content">
  <div class="top ui-widget-header"></div>
  <div class="inner ui-widget-content"></div>
  <div class="bottom ui-widget-footer ?"></div> 
</div>
于 2012-04-26T10:00:26.360 に答える
0

jQueryウィジェットの意味に大きく依存します。ウィジェットが、HTML 要素の機能を拡張するもの (つまり、テキスト ボックスへのオートコンプリート機能) などの小さなものだけで構成されている場合は、プラグインを適切に構成し、適切にテストすることをお勧めします。できるだけシンプルにしてください。人々は通常、単一のjsファイルを取り、プロジェクトでそれを参照するだけなので、MVC パターンはオーバーヘッドになります。

代わりに、バックボーン スタイルの MVC アプリを開発したい場合は、JavaScriptMVCが最適です。

于 2012-05-14T06:28:20.723 に答える