Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Express.js中,是否有相当于res.locals的路由?_Javascript_Node.js_Express_Pug - Fatal编程技术网

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

Javascript 在Express.js中,是否有相当于res.locals的路由?,javascript,node.js,express,pug,Javascript,Node.js,Express,Pug,使用Express.js/Jade时,可以向res.locals添加函数(或变量),然后在Jade视图中使用该函数,如下所示 在Express中间件中: res.locals.myUtilFunction = function(){ return 'Hello' }; 玉器: - console.log(myUtilFunction()); 是否有可能在快速路线功能内部实现类似的功能?比如: exports.index = function(req, res){ myUtilFunc

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

在Express中间件中:

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

- console.log(myUtilFunction());
是否有可能在快速路线功能内部实现类似的功能?比如:

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

我到处寻找答案,但没有找到。任何帮助都将不胜感激。

是的,您可以将其绑定到global,尽管我可能会避免使用它

app.js

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

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

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

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

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

    return next();
}

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

该函数访问req或res吗?如果不是,你可以使用declare作为全局函数或模块函数。我不得不同意,绑定到全局函数并不理想。。。然而,这似乎是实现这一目标的唯一途径。我只是希望能有某种神奇的JS式解决方案:)记住我对@Brendan答案的评论,你的解决方案似乎是一个很好的折衷方案。谢谢(我会支持你的回答,但我的代表还不够好)。谢谢。:)很高兴听到我能帮忙!