Rendering

Hexo에서 파일 또는 문자열을 렌더링 하기위해 두 가지의 메소드를 사용할 수 있습니다. 비동기 메소드인 hexo.render.render와 동기 메소드인 hexo.render.renderSync입니다. 두 가지의 메소드는 매우 유사하기 때문에 이 문서에서는 비동기 메소드인 hexo.render.render 에 대해 알아보겠습니다.

문자열의 렌더링

문자열을 렌더링하기 위해 Hexo가 어떤 엔진을 사용하여 렌더링하면 되는지 engine 을 통해 알려줘야 합니다.

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

파일의 렌더링

파일을 렌더링할 때에는 engine을 반드시 지정할 필요는 없습니다. 왜냐하면 Hexo는 파일 확장자를 보고 자동으로 연관된 렌더링 엔진을 찾기 때문입니다. 물론, 명시적으로 engine을 지정해도 상관 없습니다.

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

렌더링 옵션

You can pass in an options object as the second argument.

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

after_render Filters

렌더링이 완료되면 Hexo는 적절한 after_render filter를 실행합니다. 예를 들어, 우리는 이 기능을 JavaScript minifier를 구현하는데 사용할 수 있습니다.

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"); // '''

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);
}