【问题标题】:How to declare a function that can be called from any view in express js?如何在express js中声明一个可以从任何视图调用的函数?
【发布时间】:2017-01-22 16:31:22
【问题描述】:

是否可以在我的 express js mvc web 应用程序中的任何视图中创建一个可以调用的函数?如何在中间件中声明这样的函数可以直接从视图中访问?

所以我可以这样调用这个函数:

<%= getVar('my_name') %> // calling from the view 

并实现声明函数的变量的返回逻辑。这个函数可以使用请求和响应对象。

注意:“my_name”可以是视图上无法从控制器分配的任何内容。

【问题讨论】:

  • 假设该函数在会话中存在则返回一个值,如果不存在则返回一个默认值

标签: javascript node.js express model-view-controller middleware


【解决方案1】:

您可以向app.localsres.locals 添加函数,就像向其中添加变量一样。如果你想在那里获得请求和响应(坦率地说,我觉得这有点影响你的控制器应该做的事情),你可以创建一个中间件并将它们传递进去。

根据您在评论中所说,实际上最好只设置视图可以使用的变量,例如:

app.use((req, res, next) => {
   res.locals.value = req.session.value || 'default value';
   next();
});

如果确实需要该函数在视图中可用,可以同样设置,如果需要的话,将请求和响应绑定到该函数:

function getVar(req, res, anotherArg) {
   // do whatever
}

app.use((req, res, next) => {
   res.locals.getVar= getVar.bind(null, req, res);
   next();
});

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2016-05-16
    • 2016-03-13
    • 2012-11-21
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多