Renderização

Existem dois métodos para renderizar arquivos ou strings no Hexo: o método assíncrono hexo.render.render e o método síncrono hexo.render.renderSync. Os dois métodos são bastante semelhantes, desta forma, apenas o método hexo.render.render assíncrono será um pouco mais discutido nos parágrafos abaixo.

Renderizar uma String

Ao renderizar uma string, você deve especificar uma engine para permitir que o Hexo conheça o mecanismo de renderização que deverá ser usado.

hexo.render.render({ text: "example", engine: "swig" }).then(function (result) {
// ...
});

Renderizar um Arquivo

Ao renderizar um arquivo, não é necessário especificar uma engine porque o Hexo detectará automaticamente o mecanismo de renderização mais apropriado com base na extensão do arquivo. Mas se for a caso, você também pode definir explicitamente a engine.

hexo.render.render({ path: "path/to/file.swig" }).then(function (result) {
// ...
});

Opções de Renderização

Você pode passar um conjunto de opções em formato de objeto no segundo argumento.

hexo.render.render({ text: "" }, { foo: "foo" }).then(function (result) {
// ...
});

Filtros after_render

Quando a renderização estiver completa, o Hexo executará os filtros after_render correspondentes. Por exemplo, podemos usar este recurso para implementar um minificador para arquivos JavaScript.

var UglifyJS = require("uglify-js");

hexo.extend.filter.register("after_render:js", function (str, data) {
var result = UglifyJS.minify(str);
return result.code;
});

Verificar se um Arquivo é Renderizável

Você pode usar o método isRenderable ou isRenderableSync para verificar se um caminho de arquivo é renderizável. O retorno do método será true apenas se um renderizador correspondente for registrado.

hexo.render.isRenderable("layout.swig"); // true
hexo.render.isRenderable("image.png"); // false

Obter a Extensão de Saída

Use o método getOutput para obter a extensão da saída renderizada. Se um arquivo não foi renderizado, o método retornará uma string vazia.

hexo.render.getOutput("layout.swig"); // html
hexo.render.getOutput("image.png"); // '''

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
// you may need to cover other extensions, e.g. '.markdown', '.mkd', etc
const renderer = hexo.render.renderer.get("md");
if (renderer) {
renderer.disableNunjucks = true;
hexo.extend.renderer.register("md", "html", renderer);
}