条件Jade模板,用户login

第一个问题

我目前正在开发一个快速/翡翠的networking应用程序,而且还很新。 我已经跟随了一些教程和例子,把大部分的后端放在一起,并有一个完整的堆栈。 我目前正在尝试做的是检查用户是否正在login,并呈现依赖于该检查结果的玉石。

我知道,可以本地把JavaScript放在玉石模板中。 我有一个主页,并希望显示一个不同的导航栏取决于当前用户的login状态。

以前在我的路由我能够简单地检查这个

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

同样可以在Jade模板中完成吗? 我将如何去做这件事? 这是一个不好的方法有没有更容易或更好的方法来解决这个问题?

第二个问题

我现在好奇的是,这个请求对象只是DOM中的一些东西,我可以访问和检查像JQuery的东西?

后续问题我在这里是JavaScript的具体。 我来自Java OO的背景,这是我第一次玩JS,事实上这是一个function性的语言让我感到困惑。 例如,将上面的匿名函数引用为app.get函数的第二个参数,它从哪里获取req和res? 快递/节点只是简单地递交一个请求和回应,或者如何工作?

关于第一个问题,没有一个不错的方法,通常这种检查留在玉文件以外,使文件保持清洁状态。

您可以尝试将对象暴露给使数据可用于文档的res.render 。 所以要避免很多的jade模板中的javascript代码只是暴露一个用户对象。

var user={loggedIn:false}

关于第二个问题 ,通过使用中间件模式,每次都传递reqres ,直到res.end res.sendres.endres.render (和其他)来停止中间件堆栈的执行。

一个简单的例子是

 app.get("/", function(req,res,next){ req.hello=world; if(next){next()}; } ,function(req,res){ res.send(200,req.hello); });