我希望在ejs文件中使用一个在javascript文件中声明的变量。
javascript:
ejs文件:
javascript:
var express = require('express');
var app = express();
var myVar = 1;
在ejs文件中,如果我想在几个if语句中使用该变量,则必须再次声明它才能使用。ejs文件:
var myVar = 1;
if ( my Var ) ....
我该如何避免这种情况?或者有没有一种方法可以创建一个配置文件,使其可以从JavaScript和EJS文件中访问?
我也尝试使用:
app.locals.myVar = 1
但在EJS文件中未定义。
-------更新--------------------------
在我的代码中,我正在使用:
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.myVar
应该可以正常工作,前提是您在正确的位置设置它并在模板中正确使用它。您可能需要发布更多的代码。 - robertklepwindow
对象中?这不是 EJS 模板的工作方式。 - Dave Newton