NodeJS を使い始めて 2 か月が経ちましたが、パーシャル レンダリングでちょっとした問題に遭遇しました。一部のテンプレートに部分ビューを含めたいのですが、この部分ビューをサーバーから動的に生成したいと考えています (DB やその他のものから取得したデータに依存するため)。
それを行うためにテンプレートヘルパーを作成しようとしましたが、処理を非同期で行う必要があるため、テンプレート内に書き込むための html リターンを取得できません。
基本的に、私にとって最適なのは次のようなものです(このコードは明らかに機能しません):
template_file.js
...
<div>
<%- generatePartial(data) %>
</div>
...
helper_middleware.js
module.exports = function registerAppHelpers(request, response, next)
{
var appHelpers = {};
appHelpers.generatePartial = function generatePartial(data)
{
if (request.isAuthenticated())
{
DB.findOne({ id: request.user.id }, function found(error, obj)
{
if (error)
...
if (obj)
{
return generatePartial1(data);
}
else
{
return generatePartial2(data);
}
});
}
else
{
return generatePartial3(data);
}
};
// Register the helpers as local variables to be accessed within a template.
for (var helper in appHelpers) {
response.locals[helper] = appHelpers[helper];
}
next();
};
今、私はこの問題に対処したい方法について完全に間違っているかもしれないので、それに関する解決策/他の提案があれば躊躇しないでください.
PS : ExpressJS と EJS を使用しています。