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"); |
ファイルがレンダリング可能かどうかを確認する
isRenderable
またはisRenderableSync
メソッドを使用して、ファイルパスがレンダリング可能かどうかを確認できます。対応するレンダラーが登録されている場合にのみ、このメソッドはtrueを返します。
hexo.render.isRenderable("layout.swig"); // true |
出力拡張子の取得
getOutput
メソッドを使用して、レンダリングされた出力の拡張子を取得します。ファイルがレンダリング不可能な場合、このメソッドは空の文字列を返します。
hexo.render.getOutput("layout.swig"); // html |
Nunjucksタグの無効化
タグプラグインを使用しておらず、コンテンツのエスケープを使用せずに投稿内で{{ }}
または{% %}
を使用したい場合は、既存のレンダラーでNunjucksタグの処理を無効化できます。
// following example only applies to '.md' file extension |