Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 条件Jade模板、用户登录_Javascript_Jquery_Node.js_Express_User Accounts - Fatal编程技术网

Javascript 条件Jade模板、用户登录

Javascript 条件Jade模板、用户登录,javascript,jquery,node.js,express,user-accounts,Javascript,Jquery,Node.js,Express,User Accounts,第一个问题 我目前正在开发一个express/jade web应用程序,而且对它还很陌生。 我遵循了一些教程和示例,将大部分后端放在一起,形成了完整的堆栈。 我目前试图做的是检查用户当前是否登录,并根据检查结果呈现jade 我知道可以在jade模板中本机添加JavaScript。我有一个主页,希望根据当前用户的登录状态显示不同的导航栏 以前在我的路由中,我可以简单地检查 app.get('/', function(req, res){ if (req.cookies.user == un

第一个问题

我目前正在开发一个express/jade web应用程序,而且对它还很陌生。 我遵循了一些教程和示例,将大部分后端放在一起,形成了完整的堆栈。 我目前试图做的是检查用户当前是否登录,并根据检查结果呈现jade

我知道可以在jade模板中本机添加JavaScript。我有一个主页,希望根据当前用户的登录状态显示不同的导航栏

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

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

    other code...
在翡翠模板中也可以这样做吗?我该怎么办?这是一个糟糕的方法吗?有更简单或更好的方法来解决这个问题吗

第二个问题

我现在想知道的是,这个请求对象是否只是DOM中我可以访问和检查的东西,比如Jquery


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

关于第一个问题,不,这是一种不错的方法,通常这种检查被保留在jade文档之外,以保持文档处于干净状态

您可以尝试将对象公开到
res.render
,这样可以将数据用于文档。所以,为了避免jade模板中的许多javascript代码,只需公开一个用户对象

var user={loggedIn:false}

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

一个简单的例子是

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

非常感谢你的回答!