默认或继承的 {{sections}} 在 node.js 中使用 Hogan

Default or inherited {{sections}} Using Hogan in node.js

当我调用 res.render 时,有没有办法始终对部分使用相同的变量?例如:

res.render('index', {
        layout: 'layouts/dashboard/slim',
        partials:{
          partial_one: "path/to/partial_one.hjs",
          partial_two: "path/to/partial_two.hjs"
        },
        title: 'Dashboard',
        section_one: foo,
        section_two: bar
      });

我希望 res.render 始终将这两个部分与 foo 和 bar 相关联,而不必每次都将它们包含在调用中。这可能吗? 提前致谢。

创建自定义渲染器:

renderCustom('index', {
  layout: 'layouts/dashboard/slim',
  title: 'Dashboard',
  section_one: foo,
  section_two: bar
});

function renderCustom(name, object) {
  object.partials = {};
  object.partials.partial_one =  "path/to/partial_one.hjs";
  object.partials.partial_two =  "path/to/partial_two.hjs";

  res.render(name, object);
}

或者,您可以热修补渲染函数。

app.use(function (req, res, next) {
  var render = res.render;
  res.render = function (view, locals, cb) {
    if (typeof locals == 'object') {
        locals.partials = {};
        locals.partials.partial_one = "path/to/partial_one.hjs";
        locals.partials.partial_two = "path/to/partial_two.hjs";
    }
      render.call(res, view, locals, cb);
};
  next();
});