Async modular system
JavaScript Makefile
Latest commit 8cdeeb8 Mar 22, 2017 @dfilatov dfilatov committed on GitHub Merge pull request #55 from miripiruni/master
Readme: markdown headers fixed
Permalink
Failed to load latest commit information.
test 0.1.x May 8, 2014
.gitignore add jshint, travis Jul 4, 2013
.jscs.json add jscs Jul 8, 2013
.jshintrc enable loopfunc option Nov 6, 2013
.travis.yml 0.1.x May 8, 2014
CHANGELOG.md Update CHANGELOG.md Jul 31, 2013
Makefile 0.1.x May 8, 2014
README.md Readme: markdown headers fixed Mar 22, 2017
README.ru.md Readme: markdown headers fixed Mar 22, 2017
bower.json add bower.json Jul 18, 2015
modules.js 0.1.2 Jul 19, 2015
package.json 0.1.2 Jul 19, 2015
what-is-this.md Update what-is-this.md Dec 8, 2014

README.md

Modular system NPM version Build Status

по-русски

What? Why and what for? How to use? (ru)

Requirements

  1. Asynchronous require for modules
  2. Asynchronous provide for modules
  3. 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 default
  • allowMultipleDeclarations - 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 defined
  • NOT_RESOLVED - module was defined, but it hasn’t started resolving
  • IN_RESOLVING - resolving is in progress
  • RESOLVED - 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
  });