5

私はここで見つけることができるバックボーンボイラープレートを使用しています。

特定のコレクション、モデル、ビューなどに明示的に関連付けられていないグローバル機能を追加する方法を考えていました。例として、次のような「ログアウト」関数があります。

var logout = function(){
  // Clear Favorites
  // Handle asynchronous logging (all in-app logs are sent to the server at logout)
  // Redirect to the login page
  // Do other cleanup
}

基本的にFavorites、これは、、、、、およびアプリケーションを含む多数のモデル/コレクションを処理しますEventsLogsUsersRouter

バックボーンボイラープレートのmain.jsファイルを見ると、次のようにこれらの関数を上部(13行目)に追加しています。

function(namespace, $, Backbone, Example){

  // BEGIN MY APP LOGIC
  namespace.app.logout = function(){
    // Do logout here
  };
  // END MY APP LOGIC

  var Router = Backbone.Router.extend({

これは正常に機能しますが、アプリケーションロジックはすぐに制御不能になる可能性があります。私の質問は、このコードを整理するためのより良い方法は何でしょうか?モジュールがあり、そのUtilsモジュールをロードした場合Utils、それはもっと意味がありますか?

乾杯!

4

3 に答える 3

8

TLDR: http://addyosmani.github.com/backbone-fundamentals/高度なセクション。

それを可能にし、美しくし、そして速くする。

アプリを成長させて機能させる (可能) と、どの機能が一緒に属しているかが明らかになります。それに応じてそれらをモジュールに分割します(美しい)。

私はrequire.jsを使用していますが、backbone-boilerplateは使用していません(bbにもAMDブランチがあります)。私がアプリを整理した方法は、あなたが説明したとおりです。汎用アプリのものを含む utils モジュールがあります。次に、認証、通知、および日付の書式設定を utils モジュールに追加します。次に、怠け者で、すべての util 関数を利用できるようにしたい場所に utils モジュールを含めます。

それらはすべて単なるモジュール/ミックスインであるため、auth/notification/date モジュールを必要な単一のモジュールに含めることもできます。

于 2012-04-10T04:31:50.767 に答える
3

私はbackbone.jsアプリケーションで同じ質問に苦労しました。私がやったことは、あなたが提案したことと似ていて、特定のグローバル関数(Utilsモジュールなど)を使用してビューを作成しました。

この「Utils」クラスへの参照が結合されないようにする場合は、イベントキューにバインドし、メッセージに基づいて処理できます。たとえば、ログアウト機能の場合、「ログアウト」メッセージをイベントキューに投稿し、「Utils」ビュー内からそれにバインドできます。このように、呼び出された場所に関係なく、メッセージは適切な関数に渡されます。ログアウト関数を呼び出すには、単に「ログアウト」メッセージをイベントキューに送信する必要があります。

クラスが非常に大きくなると、混乱する可能性がありますが、グローバルに必要な関数のみを配置することをお勧めします。

更新:より堅牢なソリューションとして、ユーティリティ関数をバックボーン自体に直接組み込むことができます。ドキュメントには次のように記載されています。

「(バックボーン)はアプリケーションの基盤として機能するため、適切と思われる方法でアプリケーションを拡張および拡張することを目的としています。ソースコード全体に注釈が付けられているため、これが簡単になります。」

バックボーンオブジェクトに追加することで、組み込みのユーティリティ機能(noConflictおよびsetDomLibrary)を拡張して、ログアウトなどを含めることができることがわかりました。他のJavascript関数と同じように、必要な変数を初期化してから、次のように呼び出すことができます。

    Backbone.logout();
于 2012-04-04T18:16:33.910 に答える
3

それらをアプリケーションビューに入れます。大きくなりすぎると (私の個人的な制限は 600 ~ 800 行です)、通常は、これらのグローバル メソッドのほとんどをいくつかの論理的に妥当なヘルパー モジュールにグループ化して、アプリケーション ビューを十分に小さく保つことができます。

于 2012-04-06T21:04:45.520 に答える