如何添加一个用户栏在玉模板
我想了解如何设置为例在我的玉布局实际的用户栏我有我的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()方法,而不pipe当前页面
我想要有相同的系统:在我的玉页的渲染将要求例如requestHandler
exports.userbar = function(req, res){ var user = 'ant'; res.render('userbar', { user: user }) };
现在,这将呈现我的用户栏:)但我不知道如何与玉做
如果我不清楚的问我问题
谢谢 :)
在你的情况下,你必须在每个页面中添加{% render "AcmeBundle:Acme:menu" %}
。 明示,我认为你更容易做同样的事情。 你在这里有不同的select。 第一个select是在特定的请求处理程序中使用user
中间件
添加一个快速的中间件,只需find用户并设置app.locals
属性。 app.locals
对于所有的玉文件是可见的。 例如,这个简单的中间件就够了
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
varabile始终可用。
在.jade结构中,可以使用以下内容
layout.jade
!!! 5 html head body include userbar block content
例如dashboard.jade
:
extends ./layout block content // Your dashboard specific content goes here..
我希望这能解决你的问题。