0

Backbone JS では、jQuery の使用を強く推奨しています。ただし、それは非常に jQuery ではありません。たとえば、jQuery は new 演算子の必要性を取り除き、backbone はそれを多用します。

別の注意として、私は古典的な継承よりもプロトタイプの継承に基づいたフレームワークを探しています (新しい)。jQuery はこのカテゴリには当てはまりません。これは、私が傾倒しているアーキテクチャ スタイルにすぎません。

プロトタイプの継承を使用するフレームワークはありますか、それとも独自のブリッジ パターンをロールしますか?

4

5 に答える 5

12

Backbone と jQuery はさまざまな問題を解決します... Backbone は基本的に、Javascript の重いアプリを作成するための構造を提供します... モデル、コレクション、ビュー、およびコントローラーを提供します (ただし、1 日遊んだだけでは、私にはコントローラーがルーティングに使用され、ビューは古典的なコントローラーのようなものです)

Backbone は、AJAX リクエストなどの処理を支援するために、jQuery (またはその傾向がある場合は Zepto) に依存しています。

あなたは正しいです-それはjQueryのようではありませんが、非常に異なるものを提供しています...


アップデート

バージョン 0.5.0 の時点で、バックボーンはコントローラーの名前をルーターに変更しました。

「この機会に、0.5.0 リリースでいくつかの命名を明確にしました。Controller は Router になりました」

http://documentcloud.github.com/backbone/#Router

于 2011-03-09T15:18:22.707 に答える
4

ポールが提供した回答に完全に同意します。また、あなたの質問は本質的にあいまいであることを繰り返し述べたいと思います。

Jquery は高度に DOM 中心であり、DOM を操作するための優れた機能を提供します。スタイルの変更、ドキュメントの一部へのリモート コンテンツの読み込み、ブラウザー イベントへの応答など、(ほぼ) すべてにおいて、DOM に重点が置かれています。ドキュメント コンテンツを操作するこの種の機能では、プロトタイプの継承と、さらに重要なことに、DOM (JQueryUI の API を確認してください) を介してウィジェットにアクセスするスタイルがうまく機能します。ウィジェットを JavaScript オブジェクトとして識別する場合は、オブジェクトも追跡する必要があります...プログラミング スタイルの後に JQueryUI などが続く場合は、その必要はありません。 DOM 構造をナビゲートするか、単純にその id (基本的に要素のグローバル識別子として機能します) を介して DOM。

backbone.js はまったく別の目的のために構築されています。導入部には、データを DOM に結び付けることは悪いことであるという根本的な哲学に基づいて構築されていることが明確に述べられています。backbone.js の規則に従って構造化されたアプリケーションを構築する場合、本質的に常に javascript オブジェクトに集中しますDOM にリンクされています。サーバー データ ソースとインターフェイスするモデル、データ コンテンツが操作されたときにイベントをトリガーするモデル、大規模なデータ セットの管理に役立つコレクションなどを定義しています。とにかく、ドキュメント構造に組み込まれていない JavaScript オブジェクトを常に操作しています。 . このようなシナリオでは、従来のオブジェクト指向モデルの観点から考えるのがより一般的です。オブジェクトを取得すると、ワークフローは jQuery の使用に慣れているものと大差ありません。バックボーンも jQuery と同様にオブザーバー パターンを支持するからです。したがって、JQuery を使用してイベント ハンドラーを DOM 要素にバインドできるのと同じ方法で、モデルやコレクターなどによってディスパッチされるカスタム イベントにイベント ハンドラーをアタッチします。

他のフレームワークに関する限り、データバインディングやオブザーバブルなどを提供し、インスタンスを作成するために new キーワードを使用する必要がない Knockout をチェックアウトすることをお勧めします。味。KO には豊富なドキュメントとコード例があり、それらを調べて自分の好みに合っているかどうかを判断できます。KO についての知識が限られているため、これ以上コメントすることはできませんが、backbone.js に関する限り、いくつかの実装方法が気に入らないという理由だけでフレームワークを却下しないことを強くお勧めします。本来の機能をエレガントかつ堅牢に実行し、信じられないほど小さなフットプリントを維持します。

于 2011-05-24T08:26:40.970 に答える
2

プロトタイプの継承と、フレームワークで実際に必要なものについての誤解に苦しんでいると思います。プロトタイプを変更していてもnewキーワードを使用していない場合は、新しいオブジェクトを作成していません。オブジェクトの作成を抽象化するフレームワークを探している場合、それは別のトピックですが、newキーワードを使用することを恐れてはいけません。これは JavaScript の大きな部分です。

実際にはnewjQuery で構文を使用できます。使用しない場合、jQuery は、new渡された引数と一緒に構文を使用して、実際に再び自分自身を呼び出しています。これは純粋なシンタックス シュガーであり、ほとんど違いはありません。

「別の言い方をすれば、古典的な継承よりもプロトタイプの継承に基づいたフレームワークを探しています (新規)。」

extendBackbone は、すべてのモデル、コレクション、およびビューに組み込まれているメソッドを通じて、プロトタイプの継承に基づいて構築されています。これは非常に問題がなく、使いやすく、次のようなものを追加しますsuper- 親のプロトタイプへのフック - 単純な JS プロトタイピングだけでは難しいことがあります。

于 2011-10-21T09:06:17.077 に答える
1

Backbone.js は、データを提供するためにページを更新する必要のない ajax 駆動型 Web アプリのコーディング標準をもたらします。

jQuery は、コードを実行しているブラウザーを気にせずに基本的なことを行うのに役立つ一連のツールを提供します。

彼らには共通点がありません。ハンマー (jQuery) とツールボックス (backbone.js) を比較するようなものです。ハンマーはツールボックスの一部であり、その逆ではありません。

あ、はい!Backbone.js は jQuery とは異なります。

于 2011-08-22T14:17:03.177 に答える
1

「新しい演算子の古典的な継承よりもプロトタイプの継承に基づいたフレームワークを探しています」.

Javascript には「古典的な」継承はありません。実際には、「new」を使用する以外にプロトタイプを作成する標準的な方法はありません。おそらく、jQuery は内部で「new」を実行するメソッドを提供するだけです。

var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
},
于 2012-07-13T17:28:00.190 に答える