1

私はバックボーンを初めて使用しますが、requirejs の有無にかかわらず、いくつかのチュートリアルのスクリーンキャストを見てきました。

私の質問には、セットアップ構造(requireを使用する場合のファイル構造、および/または変数/オブジェクト構造の両方)が含まれます。

私が見たチュートリアルのほとんどは、App.Models、App.Collections、および App.Views アプローチを好むようで、内部の各項目にはモジュールの名前があります。つまり、

App.Models.todo = Backbone.Model.extend({...});
App.Collections.todos = Backbone.Collection.extend({...});
App.Views.todo = Backbone.View.extend({...});

ちょっとした調査の後、私が使いたいのと同じスタイルを使用している人を見つけようとして、最終的に見つけました: requirejs と backbone を使用した Web アプリのファイル構造。彼らはより App.[Module Name] メソッドを好むようです: つまり、

App.Todo.Model = Backbone.Model.extend({...});
App.Todo.Collection = Backbone.Collection.extend({...});
App.Todo.Views = Backbone.View.extend({...});

個人的には、モジュールを分割するよりも App.[Module Name] 構造を好みますが、異なる構造を持つことの利点があれば知りたいです。

どの構造を使用していますか? また、過去に見たり使用したりした別の構造よりも、それがどのように役立ちましたか?

4

2 に答える 2

1

このブログで説明されているアプローチが気に入っています: http://weblog.bocoup.com/organizing-your-backbone-js-application-with-modules/

于 2013-01-28T04:50:14.593 に答える
0

requireJS を使用している場合、ウィンドウにアタッチされたグローバル名前空間オブジェクトにモデル/ビューをアタッチする必要はありません (App.Views、App.Models はありません)。requireJS または別の AMD モジュール ローダーを使用する利点の 1 つは、グローバルを回避できることです。

次のようにモデルを定義できます。

define(['underscore', 'backbone'], 
    function(_, Backbone) {
    var MyModel = Backbone.Model.extend({});

    return MyModel;
});

次に、ビューを定義します。

define(['underscore', 'backbone', 'tpl!templates/someTemplate.html'],
  function(_, Backbone, template) {
  var MyView = Backbone.View.extend({});

  return MyView;
});

これで、グローバルのないモデルとビューができました。次に、他のモジュールがこれらのいずれか (おそらく App モジュール) を作成する必要がある場合は、それをdefine()配列に追加すると、それが得られます。

于 2013-01-27T23:58:24.197 に答える