Is there any way to access all loaded modules of require.js?
Background:
I want to automatically call an init()
function of my javascript-modules after all of them are loaded, see require.js + backbone.js: How to structure modules that have an initialize function?
Without require.js I looped over my own module-storage and called each init()
function.
I now want to do this with require.js. I'm aware that calling a my_custom_init_function_favoritecolor_petname_love123
of every loaded module (including external libraries) is dangerous. I hope that this will cause less trouble than manually keeping a list of all modules (and the requirements of these modules) up-to-date. Forgetting one module init() is much more likely than a third-party library having my custom function name (though the latter is probably harder to debug).
Or does anyone have a better idea of how to accomplish that?
Yes,
require.s.contexts._.defined
is an object which its keys are the module names and the values include the value returned from that module.require.s.contexts._.defined
includes all the modules (eitherdefine()
orrequire()
such as the Javascript file that is the starting point of the program and is indicated usingdata-main
for RequireJS).I'm lazy, so I just did this:
Based on other answers here.
Just finished a similar behavior within my RequireJS project.
require.s.contexts['_'].registry
holds the list of the registered modules.I am using
Underscore.js
for getting, filtering and iterating the list of modules. Maybe the following code fragment helps you: