web-dev-qa-db-ja.com

jQueryはJavaScriptMVC、BackboneJS、SproutCore、Knockoutなどのフレームワークにどこに適合しますか?

私は過去2年間 JQuery を楽しく使用しており、それを使用していくつかの本当にクールな機能を作成することに非常に成功しています。また、ウェブの未来が現在のクライアント側の道を歩むことを信じています。

ただし...

次の課題は、さまざまなコントローラーフレームワークの形でやって来るようです: KnockoutJSBackboneJSSproutCoreJavaScriptMVC (リストは続きます)。

さらに、いくつかの素晴らしい AMDローダーRequireJS または LabJS など。ただし、jQueryにはdefineおよびthen機能が組み込まれています。

すべてを追跡することがますます難しくなっています...

そして今、私の仕事は、クライアント側でMVCまたはMVVMフレームワークのいずれかの形式を使用するための戦略的な方向性を評価/決定することです...しかし、私は非常に多くの質問をします。

  • 上記のさまざまなコントローラーフレームワークで JQueryfit-inはどこにありますか?
  • JQuery一緒に使用それぞれ、または独自の ' JQuery を持っていますか-styled version 'baked-in?
  • 上記のさまざまなコントローラーフレームワークの1つを実装する場合、 RequireJSまだ必要ですのようなツールはありますか?
  • defineおよびthen機能が組み込まれていますか JQuery今すぐ優先上記のAMDローダー
  • 最もモジュール化されているように見えるのはどれですか? (下記の注を参照)

注:
将来のフレームワークで望まないことの1つは、使用しない機能を大量に取り込む必要があるという要件です。つまり、本当にモジュール式のフレームワークを使用したいのです。たとえば、jQuery UIを使用するには、実際には使用しない可能性のある他の多くのコアライブラリを取り込む必要があります。

私はそれぞれを試してみるつもりですが、REALのフィードバックは素晴らしいものになるでしょう。私はいくつかの「類似した」質問を見てきましたが、上記のスキューに実際に回答した人はいません。

前もって感謝します!

14
Prisoner ZERO

jQueryはクロスブラウザーの正規化ツールです。それはあなたに以下を与えます

  • DOMユーティリティ
  • イベントシステム
  • アヤックス
  • アニメーション
  • ES5ユーティリティ
  • 他の何か

Backbone/knockout/yada/yadaはMVCのようなライブラリーであり、モジュール式アプリケーションの構造化と記述に役立ちます。これらの構造が必要な場合にのみ必要です。

RequireJS/yada/yadaはモジュールローダーです。モジュール式アプリケーションを作成する場合は、何らかの形式のモジュールローダーが必要です。

JQueryは、上記のさまざまなコントローラーフレームワークにどこに適合しますか?

前述のように、jQueryはブラウザーを正規化します。コントローラフレームワークはサポートしていません。 jQueryは必要ありませんが、ブラウザーを正規化する方法が必要です。

JQueryはそれぞれと一緒に使用されますか、それとも独自の「JQueryスタイルバージョン」が組み込まれていますか?

バックボーン/ノックアウト/ JavaScriptMVCにはブラウザーの正規化が組み込まれていないため、そのためのツールが必要です。 SproutCoreについてはよくわかりません。

上記のさまざまなコントローラーフレームワークの1つを実装する場合、RequireJSのようなツールはまだ必要ですか?

これらは、モジュール式アプリケーションを作成する場合にのみ必要です。そうだね。

モジュール式アプリケーションには3つの種類があります

  • requireJSのような非同期requireローダー
  • 同期には modul8 のようなローダーが必要です
  • 名前空間を使用してファイルを含める
  • ender のようなパッケージ

JQueryに組み込まれた定義機能は、上記のAMDローダーに取って代わるものですか?

いいえ。jQueryに組み込まれた定義機能により、jQueryをラップせずにAMDローダーで使用できます。それでもAMDローダーが必要です。 「then」機能は、jQuery遅延オブジェクトの一部にすぎません。

最もモジュール化されているように見えるのはどれですか? (下記の注を参照)

それは意欲的な質問です。私の個人的な意見では、jQueryを含むこれらのすべてのフレームワークは肥大化しており、モジュール式ではありません。

モジュラーが必要で、独自のライブラリを作成し、独自のアーキテクチャを作成します。

ただし、悪を少なくしたい場合は、バックボーンを選択します。シンプルで小さいか、または spine

11
Raynos

私は寄稿者なので、JavaScriptMVCについて回答します。

JQueryは、上記のさまざまなコントローラーフレームワークにどこに適合しますか?

JavaScriptMVCはjQueryに依存し、それを広範囲に使用します。

JQueryはそれぞれと一緒に使用されますか、それとも独自の「JQueryスタイルバージョン」が組み込まれていますか?

JavaScriptMVCには、jQueryと競合する機能はありません。これは、独自のイベントシステムを持つバックボーンには当てはまりません。ただし、バックボーンやスパインの追加はごくわずかです。

上記のさまざまなコントローラーフレームワークの1つを実装する場合、RequireJSのようなツールはまだ必要ですか?

JavaScriptMVCには依存関係管理システムが付属しています->盗みます。 JavaScriptMVCをRequireJSで使用できますが、スチールは実際にははるかに強力であり、ユーザーがダウンロードしたサイズとほぼ同じです。

最もモジュール化されているように見えるのはどれですか? (下記の注を参照)

これは正当化されていません。 JavaScriptMVCは非常にモジュール化されています。必要なものだけを使用します。バックボーンまたはスパインと比較して、M、V、またはCパーツをスタンドアロンで使用できます。一緒に組み立てると、バックボーンよりも1kだけ大きくなります(jQueryとUnderscoreを使用する場合)。ここで、ベースコンポーネントのさまざまなサイズを確認できます。 https://github.com/jupiterjs/javascriptmvc/issues/26

しかし、JavaScriptMVCは(機能の点で)バックボーンやスパインよりもはるかに強力です。たとえば、テンプレート化されたイベントハンドラーは、実質的にすべてのメモリリークを防ぎます。ウィンドウがクリックされたときにそれ自体を非表示にするツールチップは次のとおりです。

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

これは、コントロールが次のようなモデルの変更をリッスンしている場合、MVCアプローチでは絶対に重要です。

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

コントローラーは、これらすべての外部イベントハンドラーを自動アンバインドします。

MVCパーツだけの他のいくつかの長所:

  • $ .Classは非常に強力なクラスシステムです
  • $ .Viewおよび$ .Modelは遅延オブジェクトをサポートします
  • $ .Controllerはイベントハンドラーを「再バインド」できます
  • $ .Modelは、関連付け、ゲッター/セッター、デフォルト、検証をサポートします

JavaScriptMVCは、MVCパーツ(jQueryMXサブプロジェクトの一部)だけではありません。それは:

  • jQueryMX-特別なイベント、domヘルパーなど、jQueryに欠けている機能.
  • 盗む-依存関係管理システム。しかし、それはAjaxアプリを取得してgoogleクロール可能にするなどのことを行うことができます。
  • FuncUnit-非常に強力なテストフレームワーク。

さて、何を使うかによって、多くのことが異なります。 「アプリ」と「ページ」のどちらを作成しているかに大きく依存します。テスト、依存関係管理を必要とするアプリケーションで、メモリリークを気にする場合は、JMVCまたはSproutCoreを検討します。

いくつかの基本的なウィジェットを一緒に接着する場合は、脊椎またはバックボーンを調べます。

2
Justin Meyer