nodejs ejs查看引擎,一次将相同的参数传递给不同的路由?

时间:2018-03-02 09:17:48

标签: node.js express ejs

我的路线中有4条不同的路线> intro.js文件,并希望为每条路线传递相同的变量。

(我正在使用nodejs express与ejs视图引擎)

// intro.js file

var something = {
    common: 'common',
    different: {
        test1: 'test1',
        test2: 'test2',
        test3: 'test3',
        test4: 'test4'
    }
}

router.get('/test1', (req, res) => {
    res.render('test1', {common: something.common, different: something.different.test1});
}

router.get('/test2', (req, res) => {
    res.render('test2', {common: something.common, different: something.different.test2});
}

router.get('/test3', (req, res) => {
    res.render('test3', {common: something.common, different: something.different.test3});
}

router.get('/test4', (req, res) => {
    res.render('test4', {common: something.common, different: something.different.test4});
}

似乎有更好的方法将common(something.common)变量传递给每个路由(ejs视图文件),因为something.common正在重复。

实际上,接收该公共变量的视图文件是常用的视图文件。该视图文件单独包含在test1,test2,test3,test4视图文件中,使用

<% include 'view_file' %>

有没有办法一次将重复的变量传递给所有路由?

遇到一些困难,可能真的很感激任何建议。

1 个答案:

答案 0 :(得分:2)

我认为你要找的是app.locals

在express 4中,app.locals被视为全局对象。

app.locals = {
  something: {
    common: 'common'
}

从下面的帖子:

  

这些全局变量作为局部变量传递给每个视图。

更多信息:How to create global variables accessible in all views using Express / Node.JS?