我在使用express 4时感到非常困惑。我使用express-generator生成了我的项目。根目录下有一个app.js文件,路由文件夹中有一个index.js文件。然而,互联网上关于express的教程都是直接在app.js中使用路由。因此,当我想在index.js(在路由文件夹中)中设置一些变量时,我使用了app.locals,但它不起作用。但当我改为另外两个选项时,我的ejs模板就正常工作了。我很困惑。请问有人能告诉我它们之间的区别以及如何正确使用吗?
<!-- language: index.js in router file -->
var app = require('express');
var router = express.Router();
....
router.get('/', function(req, res, next) {
var _user = req.session.user;
if (_user) {
//does't work!!
//app.locals.user=_user;
//I am not sure about which usage is correct below
//1.
req.app.locals.user = _user;
//2.
// res.locals.user=_user;
}
}
<!-- language: lang-ejs -->
<% if (user) { %>
<li><a class="navbar-link">Welcome <%= user.name %></a>
</li>
<span> | </span>
<li><a href="/logout" class="navbar-link" id="logoutBtn">Logout</a>
</li>
<% } else { %>
<li><a href="#" class="navbar-link" data-toggle="modal" data-target="#signinModal">登录</a>
</li>
<span> | </span>
<li><a href="#" class="navbar-link" data-toggle="modal" data-target="#signupModal">注册</a>
</li>
<% } %>