Правила описания модулей 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, по адресу основанному на пути файла.