Файл хуков (*.hooks.js)

Файл хуков является модулем FCF, экспортирующий объект с функциями хуков, которые вызываются на разных стадиях обработки шаблона.

Файл хуков создается либо плагинами SublimeFCFPlugin, VSCodeFCFFramework, либо командой

$ fcfmngr create hooks [TEMPLATE_NAME]

Где:

TEMPLATE_NAME - Имя шаблона

Приведем пример файла хуков для шаблона :templates/pages/template.tmpl

Для создания файла также приведена команда

$ fcfmngr create hooks template

fcf.module({ name: "templates/pages/template.hooks.js", dependencies: [], module: function(){ return { // // Хук выполняется перед сборкой аргументов шаблона // // hookBeforeBuild: (a_taskInfo) => { // }, // // Хук выполняется после сборки аргументов шаблона // // hookAfterBuild: (a_taskInfo) => { // }, // // Хук выполняется после построения системных аргументов шаблона. // // hookAfterSystemBuild: (a_taskInfo) => { // }, // // Хук выполняется после рендеринга шаблона // // hookAfterRender: (a_taskInfo) => { // }, // // Объект хуков для программно заполненных аргументов // // hooksProgramableArgument: { // // // // Хук сборки программно-заполняемого аргумента созданного методом fcf.argProg() с именем ARG_NAME // // @result Возвращает значение аргумента или объекта Promise. // // // ARG_NAME: (a_taskInfo)=>{ // }, // }, // // Объект хуков предварительной обработки аргументов шаблона // // hooksBeforeArgument: { // // // // Хук предварительной обработки аргумента с именем ARG_NAME // // // ARG_NAME: (a_taskInfo)=>{ // }, // // // // // Данный хук вызывается для предварительной обработки каждого аргумента шаблона // // // "*": (a_taskInfo)=>{ // }, // }, // // Объект хуков постобработки аргументов шаблона // // hooksAfterArgument: { // // // // Хук постобработки аргумента с именем ARG_NAME // // @result Может возвращать значение аргумента или неопределенное значение, если переопределения аргумента не выполняется. // // // ARG_NAME: (a_taskInfo)=>{ // }, // // // // // Данный хук вызывается для постобработки каждого аргумента шаблона // // @result Может возвращать значение аргумента или неопределенное значение, если переопределения аргумента не выполняется. // // // "*": (a_taskInfo)=>{ // }, // }, }; } });

Каждый хук имеет только один параметр fcf.NRender.TaskInfo a_taskInfo, который содержит информацию о ходе обработки аргументов шаблона и дает возможность модифицировать параметры хода обработки и настройки страницы. Помимо этого функции хуков могут быть асинхронными.

Файл хуков достаточно документирован, так что не будем уделять внимание на назначение отдельных хуков. Отметим только, что для аргументов шаблона созданных при помощи fcf.argProg() вызываются хуки из объекта hooksProgramableArgument.