ym
v0.1.2
Published
Async modular system
Maintainers
Readme
Modular system

What? Why and what for? How to use? (ru)
####Requirements####
- Asynchronous require for modules
- Asynchronous provide for modules
- Extending and redefining a module
####Why not CommonJS?#### See #1, #2 and #3 in the list of requirements.
####Why not AMD?#### See #2 and #3 in the list of requirements.
API spec
####Module declaration####
void modules.define(
String moduleName,
[String[] dependencies],
Function(
Function([Object objectToProvide], [Error error]) provide,
[Object resolvedDependency, ...],
[Object previousDeclaration]
) declarationFunction
)####Module usage####
void modules.require(
String[] dependencies,
Function([Object resolvedDependency, ...]) successCallbackFunction,
[Function(Error error) errorCallbackFunction]
)####Modules storage configuration####
void setOptions(Object options)#####Available options#####
trackCircularDependencies- if set to false doesn't track circular dependencies. true by defaultallowMultipleDeclarations- if set to false denies module overloading and provides an error. true by default
####Get current state of module in storage####
String getState(String name)#####Possible states#####
NOT_DEFINED- module wasn't definedNOT_RESOLVED- module was defined, but it hasn't started resolvingIN_RESOLVING- resolving is in progressRESOLVED- module is already resolved
####Check for module existence in storage####
Boolean isDefined(String moduleName)####Create yet another modules storage####
Modules modules.create()####Example####
modules.define(
'A',
['B', 'C'],
function(provide, b, c, prev) {
var a = {};
provide(a);
});
modules.define(
'B',
function(provide) {
var b = {};
provide(b);
});
modules.define(
'C',
['B'],
function(provide, b) {
var c = {};
provide(c);
});
modules.define(
'C',
function(provide, prevC) {
var nextC = {};
provide(nextC);
});
modules.require(
['A'],
function(a) {
// module 'A' now resolved to a
});