Nodejs中如何在jade里判断session的状态
Nodejs中如何在jade里判断session的状态
新手,看社区里置顶的教程N-blog。模版引擎都是ejs,我建立项目的时没注意,默认成了jade。浏览了一下jade的官方示例。能够写基本的语句。但是N-blog里下面这一段 <% if( locals.user ){ %> <span><a title=“登出” href="/logout">logout</a></span> <% } else { %> <span><a title=“登录” href="/login">login</a></span> <% } %> 在jade里怎么写呢?我试了下面的,但登入登出都是显是登出: if locals.user span a(title=“登出” href = “”) else span a(title=“登录” href="") 在post里已经设置了req.session.user
想问一下,应该怎么写? 大家用jade吗?还是那句话,求推荐jade的资料啊。
Node.js 中如何在 Jade 模板里判断 Session 状态
问题描述
你正在使用 Jade 模板引擎,并希望根据用户的 session 状态来显示不同的链接(例如登录或登出)。你在尝试将 EJS 中的条件语句转换为 Jade 时遇到了一些困难。
示例代码
首先,确保你的 Express 应用已经正确设置了 session 中间件。以下是一个简单的例子:
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'your_secret_key',
resave: false,
saveUninitialized: true
}));
app.get('/login', (req, res) => {
req.session.user = { name: 'John Doe' };
res.render('index', { user: req.session.user });
});
app.get('/logout', (req, res) => {
req.session.destroy((err) => {
if (err) throw err;
res.redirect('/');
});
});
app.set('view engine', 'jade');
app.listen(3000, () => console.log('Server started on port 3000'));
在这个例子中,当用户访问 /login
路由时,会设置一个 session 变量 user
,然后渲染 index.jade
模板。
接下来,在 Jade 模板中进行条件判断:
doctype html
html
head
title Jade Example
body
if user
span
a(title="登出" href="/logout") 登出
else
span
a(title="登录" href="/login") 登录
解释
-
if user
和else
: 这是在 Jade 中进行条件判断的标准语法。如果locals.user
存在,则渲染登出链接;否则,渲染登录链接。 -
title="登出"
和title="登录"
: 使用=
符号来插入属性值。 -
href="/logout"
和href="/login"
: 同样使用=
符号来插入链接地址。
总结
通过上述代码示例,你可以看到如何在 Jade 模板中根据 session 状态显示不同的链接。这可以通过简单的条件语句实现。如果你对 Jade 模板引擎不太熟悉,可以参考官方文档或一些教程来进一步学习。
还是不行,我照着node.js开发指南上抄了一遍也不行。不管怎么登录,都没有反应。我是不是该看看session 的工作原理。有推荐文档吗? 非常感谢。
额,里面不是这么写的,我copy过来时,乱码啦,觉得这个不是重点,就自个儿编了下。见谅,见谅。下面是实际代码 if(user) li: a(href="/login")登出 li: a(href="/reg")发表 else li: a(href="/login")登录 li: a(href="/login")注册
你可以先写html 然后html2jade
非常感谢,又涨姿势啦。
在Jade模板引擎中(现在更名为Pug),你可以使用与EJS类似的条件语句来判断locals.user
的存在与否,并根据其状态显示不同的链接。
下面是将给定的EJS代码转换为Jade(Pug)的示例:
if locals.user
span
a(title="登出" href="/logout") 登出
else
span
a(title="登录" href="/login") 登录
解释
- 条件判断:
if locals.user
这一行用于检查locals.user
是否存在。如果存在,则表示用户已登录。 - 输出HTML:当条件满足时(即用户已登录),输出一个指向
/logout
的链接;否则输出一个指向/login
的链接。 - 属性和文本:
a(title="登出" href="/logout") 登出
这部分定义了一个链接,其title
属性值为“登出”,文本内容为“登出”。对于未登录的情况,链接的href
属性值为/login
,文本内容为“登录”。
确保你的后端代码正确地设置了req.session.user
,这样在模板渲染时,locals.user
就会被正确传递到前端模板中。
为什么您的代码不起作用?
在您尝试的代码中,所有的href
属性值为空字符串,这显然是错误的。应该根据用户的登录状态设置正确的URL。此外,确保locals.user
确实包含正确的信息。如果locals.user
没有正确传递或设置,即使语法正确,也无法正常工作。
希望这个示例能帮助您解决问题!如果您需要更多关于Pug模板引擎的信息,可以查阅官方文档,它提供了详细的语法说明和用法示例。