是否可以在某个地方创建一个可以从我的 Express JS MVC Web 应用程序中的任何 View 调用的函数?如何在中间件中声明这样的函数以便直接从 View 访问?
所以我可以这样调用这个函数:
<%= getVar('my_name') %> // calling from the view
并实现声明函数的变量的返回逻辑。该函数可以使用请求和响应对象。
注意:“my_name”可以是 View 上无法从 Controller 分配的任何内容。
最佳答案
您可以向 app.locals
或 res.locals
添加函数,就像向其中添加变量一样。如果您希望在那里提供请求和响应(坦率地说,我觉得这有点影响您的 Controller 应该做的事情),您可以创建一个中间件并将其传递进去。
根据您在评论中所说的,实际上最好只设置 View 可以使用的变量,例如:
app.use((req, res, next) => {
res.locals.value = req.session.value || 'default value';
next();
});
如果您确实需要该函数在 View 中可用,您可以以相同的方式进行设置,并根据需要将请求和响应绑定(bind)到该函数:
function getVar(req, res, anotherArg) {
// do whatever
}
app.use((req, res, next) => {
res.locals.getVar= getVar.bind(null, req, res);
next();
});
关于javascript - 如何在express js中声明一个可以从任何 View 调用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793373/