将变量传递给 Express 中的路由模板的最简单方法?
Easiest way to pass variables to routes templates in Express?
我刚刚通过将数据模型和路由拆分到单独的文件中,制作了一个 Node.js 应用程序模块化。
我的路线由 express.Router()
导出。在这些路线中,我想从我的 app.js 中导入查询值,以使用模板呈现。
我如何以最简单的方式保存东西让我们用 app.locals 或 req.variableName 说?
由于使用 express.Router()
的路由将它与 app.js 联系在一起,我是否应该使用 app.params()
并以某种方式使这些值可访问?
在我扩展应用程序时,使用全局变量似乎是一个更糟糕的主意。我不确定最佳实践是否会使用 app.locals.valueKey = key.someValue
...
将值保存到流程环境
非常感谢任何人
如果我理解正确,你想传递一个值给后面的中间件:
app.js:
// Let's say it's like this in this example
var express = require('express');
var app = express();
app.use(function (req, res, next) {
var user = User.findOne({ email: 'someValue' }, function (err, user) {
// Returning a document with the keys I'm interested in
req.user = { key1: value1, key2: value2... }; // add the user to the request object
next(); // tell express to execute the next middleware
});
});
// Here I include the route
require('./routes/public.js')(app); // I would recommend passing in the app object
/routes/public.js:
module.export = function(app) {
app.get('/', function(req, res) {
// Serving Home Page (where I want to pass in the values)
router.get('/', function (req, res) {
// Passing in the values for Swig to render
var user = req.user; // this is the object you set in the earlier middleware (in app.js)
res.render('index.html', { pagename: user.key2, ... });
});
});
});
我刚刚通过将数据模型和路由拆分到单独的文件中,制作了一个 Node.js 应用程序模块化。
我的路线由 express.Router()
导出。在这些路线中,我想从我的 app.js 中导入查询值,以使用模板呈现。
我如何以最简单的方式保存东西让我们用 app.locals 或 req.variableName 说?
由于使用 express.Router()
的路由将它与 app.js 联系在一起,我是否应该使用 app.params()
并以某种方式使这些值可访问?
在我扩展应用程序时,使用全局变量似乎是一个更糟糕的主意。我不确定最佳实践是否会使用 app.locals.valueKey = key.someValue
...
非常感谢任何人
如果我理解正确,你想传递一个值给后面的中间件:
app.js:
// Let's say it's like this in this example
var express = require('express');
var app = express();
app.use(function (req, res, next) {
var user = User.findOne({ email: 'someValue' }, function (err, user) {
// Returning a document with the keys I'm interested in
req.user = { key1: value1, key2: value2... }; // add the user to the request object
next(); // tell express to execute the next middleware
});
});
// Here I include the route
require('./routes/public.js')(app); // I would recommend passing in the app object
/routes/public.js:
module.export = function(app) {
app.get('/', function(req, res) {
// Serving Home Page (where I want to pass in the values)
router.get('/', function (req, res) {
// Passing in the values for Swig to render
var user = req.user; // this is the object you set in the earlier middleware (in app.js)
res.render('index.html', { pagename: user.key2, ... });
});
});
});