Существует два метода обработки файлов или строк для рендеринга: асинхронный hexo.render.render
и синхронный hexo.render.renderSync
. Unsurprisingly, the two methods are very similar so only the asynchronous hexo.render.render
will be further discussed in the below paragraphs.
Обработка строки
При рендеринге строки Hexo необходимо указать, каким обработчиком (engine
) её обрабатывать.
hexo.render.render({ text: "example", engine: "swig" }).then(function (result) { |
Обработка файла
При обработке файла не нужно указывать engine
, потому что Hexo сам обнаружит соответствующий рендер автоматически в зависимости от расширения файла. Конечно, возможно и явно задать обработчик.
hexo.render.render({ path: "path/to/file.swig" }).then(function (result) { |
Опции обработчика
Можно задать опции в качестве второго аргумента.
hexo.render.render({ text: "" }, { foo: "foo" }).then(function (result) { |
Фильтр after_render
При окончании обработки Hexo выполнит соответствующие фильтры, заданные в переменной after_render
. Например, эта функция запустит минификацию JavaScript’а.
var UglifyJS = require("uglify-js"); |
Проверка, существует ли обработчик для типа файла
Можно использовать метод isRenderable
или isRenderableSync
для проверки, зарегистрирован ли обработчик для типа файла. Только когда соответствующий обработчик был зарегистрирован, будет возвращёно значение true
.
hexo.render.isRenderable("layout.swig"); // true |
Определение расширения на выходе
Метод getOutput
получает расширение на выходе обработчика. Если передать необрабатываемый файл, то обработчик вернёт пустую строку.
hexo.render.getOutput("layout.swig"); // html |
Disable Nunjucks tags
If you are not using a tag plugin and want to use {{ }}
or {% %}
in your post without using content escaping, you can disable processing of Nunjucks tag in existing renderer by:
// following example only applies to '.md' file extension |