有没有办法访问require.js的所有已加载模块?
背景:
我想在加载所有这些函数后自动调用我的javascript-modules的 init()
函数,请参阅require.js + backbone.js: How to structure modules that have an initialize function?没有require.js我遍历我自己的模块存储并调用每个 init()
函数 .
我现在想用require.js做这件事 . 我知道调用每个加载模块(包括外部库)的 my_custom_init_function_favoritecolor_petname_love123
是危险的 . 我希望这比手动保持所有模块的列表(以及这些模块的要求)是最新的麻烦少 . 忘记一个模块init()比具有我的自定义函数名的第三方库更有可能(尽管后者可能更难调试) .
或者有没有人更好地了解如何实现这一目标?
3 回答
我很懒,所以我这样做了:
根据其他答案在这里 .
是的,
require.s.contexts._.defined
是一个对象,其键是模块名称,值包括从该模块返回的值 .require.s.contexts._.defined
包括所有模块(define()
或require()
,例如作为程序起点的Javascript文件,并使用data-main
表示RequireJS) .刚刚在我的RequireJS项目中完成了类似的行为 .
require.s.contexts['_'].registry
包含已注册模块的列表 .我使用
Underscore.js
来获取,过滤和迭代模块列表 . 也许以下代码片段可以帮助您: