1

第一个问题

我目前正在开发一个 express/jade web 应用程序,并且对它很陌生。我遵循了一些教程和示例,并将大部分后端放在一起并拥有完整的堆栈。我目前正在尝试做的是检查用户当前是否登录并呈现取决于该检查结果的翡翠。

我知道可以将 JavaScript 原生地放入玉模板中。我有一个主页,想根据当前用户的登录状态显示不同的导航栏。

以前在我的路由中,我可以简单地检查一下

app.get('/', function(req, res){
    if (req.cookies.user == undefined || req.cookies.pass == undefined)

    other code...

可以在 Jade 模板中执行相同的操作吗?我该怎么办?这是一种不好的方法吗?有更简单或更好的方法来解决这个问题吗?

第二个问题

我现在很好奇的是,这个请求对象是否只是 DOM 中我可以访问并使用 Jquery 之类的东西检查的东西?

我在这里遇到的一个后续问题是特定于 javascript 的。我来自 Java OO 背景,这是我第一次玩 JS,它是一种函数式语言的事实让我感到困惑。例如,将上面的匿名函数称为 app.get 函数的第二个参数,它从哪里获取 req 和 res?express/node 是否只是将请求和响应交给它,或者它是如何工作的?

4

1 回答 1

2

关于第一个问题,不,这不是一个坏方法,通常这种检查留在玉文件之外,以保持文件处于清洁状态。

您可以尝试公开对象,以res.render使数据可用以记录。所以为了避免jade模板中的大部分javascript代码,只需公开一个用户对象。

var user={loggedIn:false}

大约第二个问题, req,res每次都通过使用中间件模式来表达,直到调用一个res.sendor res.endor res.render(and other) 来停止中间件堆栈的执行。

一个简单的例子是

app.get("/",
 function(req,res,next){
    req.hello=world; if(next){next()};
 }
 ,function(req,res){
    res.send(200,req.hello);
 });
于 2013-11-06T21:21:25.270 回答