将绝对 url 路径传递给 express 中的车把视图

Pass absolute url path to handlebars view in express

我正在尝试使用带有车把的快速服务器作为模板引擎来设置规范元标记。我无法弄清楚如何获取绝对 url 路径并将其传递给车把视图。我打算在 handlebars 中创建一个辅助函数来执行此操作,但它不在 req 范围内,所以我真的不知道如何获取 url 或如何去做。我想动态设置规范而不是手动设置。谢谢

这是我的简单服务器:

const express = require('express');
const router = require('./routes/router');
const handlebars = require('express-handlebars');
const PORT = process.env.PORT || 5000;
const path = require('path');
const app = express();

var hbs = handlebars.create({
  defaultLayout: 'main',
  helpers: {
    canonical: function() {
      //get absolute url path
    }
  }
});

app.use(express.json());
app.set('views', path.join(__dirname, 'views'));
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

router(app);

app.listen(PORT, err => {
  if (err) throw err;
  console.log(`ready at http://localhost:${PORT}`);
});

你不需要帮手来做这件事。您可以将值添加到 res.locals 并通过 Handlebars 访问它。

app.use("*", function(req, res, next){
    res.locals.absoluteUrl = absoluteUrl; // Note, you'll need to calculate this yourself
    next();
});

在 Handlebars 中,您可以将其作为标准变量访问:

{{absoluteUrl}}