Правила описания модулей JavaScript
В фреймворке используется своя система загрузки файлов JavaScript, в которой они являются модулями. JS модули могут быть загружены, как со стороны сервера, так и со стороны клиента. Каждый модуль объявляется функцией fcf.module(). И может быть создан либо плагинами либо командой:
$ fcfmngr create module [MODULE_NAME]
Пример файла модуля :templates/blocks/TestModule.js, который был сгенерирован автоматически командой:
$ cd [PROJECT_DIRECTORY]
$ cd templates/blocks
$ fcfmngr create module TestModule
fcf.module({
name: "templates/blocks/TestModule.js",
dependencies: [],
lazy: [],
module: function(){
var Namespace = fcf.prepareObject(fcf, "root/templates/blocks");
class TestModule {
constructor(){
}
};
Namespace.TestModule = TestModule;
return Namespace.TestModule;
}
});
Свойства модуля:
string name - Путь к файлу модуля в нотации FCF, которое также является его именем.
[string] dependencies - Массив зависимостей модуля. Данные зависимости подгружаются первыми и доступны, как аргументы функции модуля (свойство module), в последовательности указанной в массиве.
[string] lazy - Массив зависимостей модуля, которые загружаются после загрузки модуля. Доступ к данным модулей указанных в данном параметре осуществляется только через глобальные переменные. Используется в случае циклических зависимостей модулей.
function module - Функция модуля, которая должна возвращать данные самого модуля. В качестве параметров выступают данные модулей указанных в свойстве dependencies.
Как видно из приведенного примера, автоматически сгенерированный файл уже содержит каркас класса и помещает его в глобальный объект fcf, по адресу основанному на пути файла.