将一个variables从javascript传递给ejs

我想使用一个variables,这是在JavaScript文件中声明到ejs文件。

JavaScript的:

var express = require('express'); var app = express(); var myVar = 1; 

在ejs文件中,我想在几个if语句中使用该variables,为了能够使用它,我必须重新声明它。

ejs文件:

 var myVar = 1; if ( my Var ) .... 

我怎样才能避免这种情况?还是有没有办法创build一个configuration文件,这是从javascript和ejs访问?

我也尝试使用:

app.locals.myVar = 1

但它在ejs文件中是未定义的。

——- UPDATE ————————–

在我的代码中,我正在使用:

 app.get('/', function (req, res) { res.render('index', { user : req.user, message: [] }); }); 

在使用app.locals之后:

 app.get('/', function (req, res) { res.render('index', { user : req.user, message: [] }); res.render('user_info.ejs'); 

});

即使代码运行良好,我收到:

 ReferenceError: ....user_info.ejs:18 >> 18| height:60px; user is not defined at eval (eval at <anonymous> (...node_modules/ejs/lib/ejs.js:464:12), <anonymous>:20:12) at returnedFn (...node_modules/ejs/lib/ejs.js:493:17) at View.exports.renderFile [as engine] (.../node_modules/ejs/lib/ejs.js:350:31) ..... 

因为正如我所说的代码运行良好。如果我运行它没有第二个res.render('user_info.ejs)我没有收到任何错误。

那么,我可以有两个res.render语句吗?

下面是关于如何使用app.locals向(EJS)模板公开variables的一个非常简单的例子:

 // app.js var express = require('express'); var app = express(); var server = app.listen(3000); app.locals.myVar = 1; app.get('/', function(req, res) { res.render('index.ejs'); }); // views/index.ejs <% if (myVar) { %> <h1>myVar is here!</h1> <% } else { %> <h1>Boohiss no myVar!</h1> <% } %> 

应用程序app.locals.myVar方法应该工作,所以一定要阻碍。 但是你可以避免使用app.locals.myVar ,直接variables传递给你的视图:

 var express = require('express'); var app = express(); app.get('/', function(req, res) { var myVar = 1; res.render('testPage', { myVar : myVar }); }); 

myVarvariables现在应该可用于“testPage”ejs文件。 在里面你可以这样做:

 <%= myVar %> 

看到它输出“1”。

最后,确保你已经把视图引擎设置为ejs:

 app.set('view engine', 'ejs'); 

否则,它将无法正常工作。