README.ru.md
March 22, 2017 · View on GitHub
Что это? Зачем и для кого? Как пользоваться?
Требования
- Асинхронный require модулей
- Асинхронный provide модулей
- Возможность передекларации/додекларации модуля
Почему не CommonJS?
Смотри пункты 1, 2 и 3 требований
Почему не AMD?
Смотри пункты 2 и 3 требований
Спецификация API
Объявление модуля
void modules.define(
String moduleName,
[String[] dependencies],
Function(
Function([Object objectToProvide], [Error error]) provide,
[Object resolvedDependency, ...],
[Object previousDeclaration]
) declarationFunction
)
Подключение модуля
void modules.require(
String[] dependencies,
Function([Object resolvedDependency, ...]) successCallbackFunction,
[Function(Error error) errorCallbackFunction]
)
Создание нового хранилища модулей
Modules modules.create()
Настройка хранилища модулей
void setOptions(Object options)
Доступные опции
trackCircularDependencies- приfalseне проверяет зацикленные зависимости. По умолчаниюtrueallowMultipleDeclarations- приfalseзапрещает расширение (переопределение) модулей и генерирует ошибку. По умолчаниюtrue
Получение текущего состояния модуля в хранилище
String getState(String name)
Возможные состояния
NOT_DEFINED- не было объявления модуляNOT_RESOLVED- модуль был объявлен, но разрешение зависимостей еще не начатоIN_RESOLVING- в процессе разрешения зависимостей модуляRESOLVED- зависимости разрешены
Проверка наличия объявления модуля в хранилище
Boolean isDefined(String moduleName)
Пример
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
});

