我已经开始使用 NodeJS 几个月了,我遇到了局部渲染的小问题。我想在一些模板中包含一个局部视图,但我希望这个局部视图是从服务器动态生成的(因为它取决于从数据库和其他东西检索到的数据)。
我试图创建一个模板助手来做到这一点,但由于处理需要异步完成,我无法在我的模板中获得要写入的 html 返回。
基本上对我来说最好的是类似于(这段代码显然不起作用):
模板文件.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。