我正在使用Express 3.0和Swig作为模板引擎开发NodeJS应用程序。我想要完成的是将渲染参数传递给下一个路径。我想要这个,因为我的网站的每个页面都存在某些网站组件(侧边栏,导航栏,页脚等)。这些组件中的每一个都具有可以打开和关闭的小部件和链接。现在我正在执行以下操作来切换这些小部件:
response.render('network.html', {
activeTab: 'network',
username: request.session.username,
bread_current: 'Network',
page_title: 'Your Network',
page_subtitle: 'Mordrum',
widgets: {
navbar: {
chats: {
enabled: true,
color: 'blue',
icon: 'chatbubble'
}, messages: {
enabled: true,
color: 'red',
icon: 'mail'
}, users: {
enabled: true,
color: 'green',
icon: 'person'
}
}
}
})
有很多参数(在小部件对象中)我最终在我的代码中重复多次(每个路由一次)。我想知道是否有办法将args传递到下一条路线。
答案 0 :(得分:2)
如果数据是静态的(在运行应用程序的过程中不会发生变化),请使用app.locals
进行存储。存储在其中的任何数据将自动变为可用于任何模板:
app.locals.widgets = {
navbar: {
chats: {
enabled: true,
color: 'blue',
icon: 'chatbubble'
}, messages: {
enabled: true,
color: 'red',
icon: 'mail'
}, users: {
enabled: true,
color: 'green',
icon: 'person'
}
}
};
如果数据 更改,请改用res.locals
。存储在那里的任何数据也可用于任何模板,但仅限于单个请求的生命周期内。任何中间件也可以访问它(并在必要时进行更改)。
答案 1 :(得分:0)
这样做的明确方法是在res
上设置它们。大概你有一个Widget1
中间件。这将设置res.widget1.options
,然后调用next()
。然后另一个中间件将设置res.widget2.options
,依此类推。