在 Express 中通过 res.locals 传递数据时遇到问题
Trouble passing data through res.locals in Express
我正在尝试将我的路线信息传递给每个视图。我需要在 index.ejs
中使用 req.path
变量。所以我尝试通过 res.locals
传递数据,但它不起作用。
我的app.js
app.use((req, res, next) => {
res.locals.path = req.path;
next();
});
router.get('/', async (req, res) => {
res.render('classes/index');
});
index.ejs
<% if(!path=='/'){ %>
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a href="#" class="nav-link">Log In</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Sign Up</a>
</li>
</ul>
<% } %>
有人看到我哪里搞砸了吗?
要设置 res.locals
的中间件应该在创建 router
实例之前出现:
const router = require('express').Router();
app.use((req, res, next) => {
res.locals.path = req.path;
next();
});
router.get('/', async (req, res) => {
res.render('classes/index');
});
app.use(router);
你可以像这样传递数据:
router.get('/', async (req, res) => {
res.render('classes/index', {path: req.path});
});
我正在尝试将我的路线信息传递给每个视图。我需要在 index.ejs
中使用 req.path
变量。所以我尝试通过 res.locals
传递数据,但它不起作用。
我的app.js
app.use((req, res, next) => {
res.locals.path = req.path;
next();
});
router.get('/', async (req, res) => {
res.render('classes/index');
});
index.ejs
<% if(!path=='/'){ %>
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a href="#" class="nav-link">Log In</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Sign Up</a>
</li>
</ul>
<% } %>
有人看到我哪里搞砸了吗?
要设置 res.locals
的中间件应该在创建 router
实例之前出现:
const router = require('express').Router();
app.use((req, res, next) => {
res.locals.path = req.path;
next();
});
router.get('/', async (req, res) => {
res.render('classes/index');
});
app.use(router);
你可以像这样传递数据:
router.get('/', async (req, res) => {
res.render('classes/index', {path: req.path});
});