44

ロードされたrequire.jsのすべてのモジュールにアクセスする方法はありますか?

背景: javascript-modules の関数をすべてロードした後
に自動的に呼び出したいと思います。require.js + backbone.js: How to structure modules that have an initialize function? を参照してください。 require.js がなければ、自分のモジュール ストレージをループして、各関数を呼び出しました。 これをrequire.jsで行いたいと思います。ロードされたすべてのモジュール (外部ライブラリを含む) を呼び出すのは危険であることは承知しています。これにより、すべてのモジュール (およびこれらのモジュールの要件) のリストを手動で最新の状態に保つよりも問題が少なくなることを願っています。1 つのモジュール init() を忘れる可能性は、カスタム関数名を持つサードパーティ ライブラリよりもはるかに可能性が高くなります (ただし、後者はおそらくデバッグが難しくなります)。init()init()
my_custom_init_function_favoritecolor_petname_love123

または、それを達成する方法についてより良いアイデアを持っている人はいますか?

4

3 に答える 3

11

RequireJSプロジェクト内で同様の動作を完了しました。require.s.contexts['_'].registry登録されたモジュールのリストを保持します。

Underscore.jsモジュールのリストの取得、フィルタリング、反復に使用しています。たぶん、次のコードフラグメントがあなたを助けます:

var modules_registered = _.keys(require.s.contexts['_'].registry);
var modules_to_be_initialized = _.filter(modules_registered, function(module_title) {
    return module_title.indexOf('modules') > -1;
});

_.each(modules_to_be_initialized, function(module_name) {
    require([module_name], function(current_module) {
        current_module.init();
    });
});
于 2012-12-18T13:06:37.817 に答える