在Express.js中,是否有相当于res.locals的路由?

时间:2013-12-11 11:32:39

标签: javascript node.js express pug

使用Express.js / Jade时,可以向res.locals添加一个函数(或变量),然后在如下的Jade视图中使用所述函数。

在Express中间件中:

res.locals.myUtilFunction = function(){ return 'Hello' };

在玉中:

- console.log(myUtilFunction());

是否可以在Express路线功能中实现类似的功能?像:

exports.index = function(req, res){
    myUtilFunction(); //Instead of having to do res.locals.myUtilFunction() each time...
}

我搜索了高低的答案,却找不到答案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用自定义函数将您想要的任何内容绑定到请求和响应对象。 这样您就不必绑定到全局范围。

在加载路由器之前,请将其放入初始化代码中。

app.use function(req, res, next) {
    req.loadWhatever = function() { ... };

    return next();
}

在您的路由方法中,您可以访问req.loadWhatever

答案 1 :(得分:0)

是的,你可以把它绑定到全球,虽然我可能会避免从这个

中做出一个习惯

app.js

global.myFunction = function (text){ 
  console.log(text);
}
var express = require('express');
var routes = require('./routes');
....

路由/ index.js

exports.index = function(req, res){
  myFunction('test');
  res.render('index', { title: 'Express' });
};