gpt4 book ai didi

node.js - 如何在jade模板中添加用户栏

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:37 25 4
gpt4 key购买 nike

我试图了解如何在我的 Jade 布局中设置例如用户栏实际上我有我的layout.jade:

doctype 5
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
include userbar
block content

在我的包含中,我当前页面上只有变量环境。

别咬我,我会以 Symfony2 框架为例 :D例如,如果您的布局中有此代码

{% render "AcmeBundle:Acme:menu" %}

无论当前页面如何,它都会调用 AcmeController 和 menuAction() 方法

我希望有相同的系统:我的 Jade 页面中的渲染将调用例如 requestHandler

exports.userbar = function(req, res){
var user = 'ant';
res.render('userbar', { user: user })
};

现在这将渲染我的用户栏:)但我不知道如何用 Jade 来做

如果我不清楚,请向我提问

谢谢:)

最佳答案

就您而言,您也必须在每个页面中添加 {% render "AcmeBundle:Acme:menu"%} 。在 Express 中,我认为您可以更轻松地完成相同的任务。您在这里有不同的选择。第一个选项是在特定请求处理程序中使用 user 中间件,例如

添加一个快速中间件,只需查找用户并设置 app.locals 属性。 app.locals 对于所有 jade 文件都是可见的。例如这个简单的中间件就足够了

var user = function(req, res, next)
{
var user = db.find(...);
app.locals({user: user});
next(); // Do not render the page here, call the next()
}

然后在您的路由中,使用var user,如下所示:

app.get('/your_desired_url', user, function(req, res) {
res.render('your_required_jade_file')
});

您可以在任何您想要的请求处理程序中使用此方法;例如,

app.get('/your_desired_url2', user, function(req, res) {
res.render('your_required_jade_file')
});

app.get('/your_desired_url2', user, function(req, res) {
res.render('your_required_jade_file')
});

在第二个选项中,您可以将此中间件添加为通用中间件,例如

app.use(function(req, res, next) {
var user = db.find(...);
if(user) app.locals({user: user});
else app.locals({user: null});

next(); // Do not render the page here, call the next()
});

在第二种情况下,您的所有请求都通过此函数传递,因此在 .jade 文件中,user 变量始终可用。

在您的 .jade 结构中,您可以使用以下内容

layout.jade

!!! 5
html
head
body
include userbar
block content

例如dashboard.jade:

extends ./layout
block content
// Your dashboard specific content goes here..

希望这能解决您的问题。

关于node.js - 如何在jade模板中添加用户栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com