1

ウィンドウにアタッチされた変数を使用しています:

window.App

アプリケーション内の残りの変数の参照ポイントとして。ただし、これを実行しようとすると、次のようになります。

window.App = {};

App.Views.User.Login = /* Login View Instance */;

Views定義されていないことについて文句を言います。App.Views, App.Models, App.Collections事前定義などができるので、ほとんどの場合これで問題ありません。

ただし、常に必要とは限らないサブモジュールに入ると(App.Views.User)、必要なときにこれをロードすることをお勧めします...

次の唯一のオプションはありますか?

if( ! App.Views.User ) { App.Views.User = {}; };

App.Views.User.Login = /* Login View Instance */;
4

2 に答える 2

2

私はあなたのサブモジュールをこのように始めます:

App.Views.User = App.Views.User || {};
App.Views.User.Login = new Backbone.Marionette.ItemView.extend({});

あなたがすでに持っているものよりほんのわずかにきれいですが、それは一般的にあなたがしていることです。

于 2012-11-27T22:55:56.080 に答える
0

何かのようなもの:

namespace("myapp.mymodule.submodule.component",{});

どこ:

function namespace (ns, module, optional_root) {
    var root = optional_root || window,
        array = ns.split("."),
        name = "",
        component_name = array.pop(),

        i = 0, l = array.length;

    for (; i < l; i += 1) {
        name = array[i];
        root[name] = root[name] || {};
        root = root[name];
    }

    root[component_name] = module;
}

これにより、次のように書くことができます。

namespace("Appname.module.component", {});

関数が検索することを期待する場所window.Appname、または次のようになります。

namespace("module.component", function(){}, Myapp);

存在しない場合は、で定義することから始めるように指示しmoduleます。Myapp

唯一の欠点は、モジュールをロードする前に関数が存在している必要があることです。

于 2012-11-27T23:36:44.557 に答える