Node.js 将渲染参数传递到下一个路由
我正在使用Express 3.0开发一个NodeJS应用程序,其中Swig作为我的模板引擎。我想完成的是将呈现参数传递到下一个路由。我之所以想这么做,是因为我有一些网站组件,它们存在于我网站的每一个页面上(边栏、导航栏、页脚等)。这些组件中的每一个都有打开和关闭的小部件和链接。现在,我正在执行以下操作来切换这些小部件:Node.js 将渲染参数传递到下一个路由,node.js,express,swig-template,Node.js,Express,Swig Template,我正在使用Express 3.0开发一个NodeJS应用程序,其中Swig作为我的模板引擎。我想完成的是将呈现参数传递到下一个路由。我之所以想这么做,是因为我有一些网站组件,它们存在于我网站的每一个页面上(边栏、导航栏、页脚等)。这些组件中的每一个都有打开和关闭的小部件和链接。现在,我正在执行以下操作来切换这些小部件: response.render('network.html', { activeTab: 'network', username: request.session.use
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'
}
}
}
})
那里有很多参数(在widgets对象中),我最终在代码中重复了很多次(每个路由一次)。我想知道是否有办法将args传递到下一条路线。这样做的快捷方式是将它们设置为
res
。大概您有一个Widget1
中间件。这将设置res.widget1.options
,然后调用next()
。然后另一个中间件将设置res.widget2.options
,依此类推。如果数据是静态的(在运行应用程序的过程中不会更改),请使用存储数据。存储在其中的任何数据将自动可用于任何模板:
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'
}
}
};
如果数据确实发生更改,请改用。存储在那里的任何数据也可用于任何模板,但仅在单个请求的生命周期内可用。任何中间件也可以访问它(并在必要时进行更改)。非常感谢,这正是我所需要的!