レンダリング

Hexoでファイルまたは文字列をレンダリングする方法は2つあります。非同期メソッドのhexo.render.renderと同期メソッドのhexo.render.renderSyncです。当然のことながら、これら2つのメソッドは非常に似ているため、以降の段落では非同期メソッドのhexo.render.renderについてのみ説明します。

文字列のレンダリング

文字列をレンダリングする場合、どのレンダリングエンジンを使用するかをHexoに知らせるためにengineを指定する必要があります。

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

ファイルのレンダリング

ファイルをレンダリングする場合、Hexoはファイルの拡張子に基づいて関連するレンダリングエンジンを自動的に検出するため、engineを指定する必要はありません。もちろん、engineを明示的に定義することもできます。

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

レンダリングオプション

2番目の引数としてオプションオブジェクトを渡すことができます。

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

after_renderフィルター

レンダリングが完了すると、Hexoは対応するafter_renderフィルターを実行します。たとえば、この機能を使用してJavaScript圧縮ツールを実装できます。

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

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

ファイルがレンダリング可能かどうかを確認する

isRenderableまたはisRenderableSyncメソッドを使用して、ファイルパスがレンダリング可能かどうかを確認できます。対応するレンダラーが登録されている場合にのみ、このメソッドはtrueを返します。

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

出力拡張子の取得

getOutputメソッドを使用して、レンダリングされた出力の拡張子を取得します。ファイルがレンダリング不可能な場合、このメソッドは空の文字列を返します。

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

Nunjucksタグの無効化

タグプラグインを使用しておらず、コンテンツのエスケープを使用せずに投稿内で{{ }}または{% %}を使用したい場合は、既存のレンダラーでNunjucksタグの処理を無効化できます。

// following example only applies to '.md' file extension
// you may need to cover other extensions, e.g. '.markdown', '.mkd'
const renderer = hexo.render.renderer.get("md");
if (renderer) {
renderer.disableNunjucks = true;
hexo.extend.renderer.register("md", "html", renderer);
}