Node.js 将渲染参数传递到下一个路由

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

我正在使用Express 3.0开发一个NodeJS应用程序,其中Swig作为我的模板引擎。我想完成的是将呈现参数传递到下一个路由。我之所以想这么做,是因为我有一些网站组件,它们存在于我网站的每一个页面上(边栏、导航栏、页脚等)。这些组件中的每一个都有打开和关闭的小部件和链接。现在,我正在执行以下操作来切换这些小部件:

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'
    } 
  }   
}; 

如果数据确实发生更改,请改用。存储在那里的任何数据也可用于任何模板,但仅在单个请求的生命周期内可用。任何中间件也可以访问它(并在必要时进行更改)。

非常感谢,这正是我所需要的!