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){ |
レンダリングオプション
第二引数としてオプションオブジェクトを渡すことができます。
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タグの処理を無効にすることができます:
// 以下の例は'.md'ファイル拡張子にのみ適用されます |