nodejs express.router 带参数
nodejs express.router with parameters
问题
我正在使用带有 express 模块的 nodejs 应用程序。为了有一个结构,我将路由拆分为一个 extern routes.js。我想在 req 和 res 参数旁边给这个 route.js 一些其他需要的参数。但是我不知道怎么办。
Index.js
const app = express();
app.use(session({
secret: uuidv4(),
resave: true,
saveUninitialized: true
}));
app.use(helmet());
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/', express.static(path.join(__dirname, '/site/static')));
app.use('/', routes);
routes.js
module.exports = (function() {
'use strict';
let router = require('express').Router();
router.get('/', (req, res) => {
if(!req.session || req.session.key !== loginkey) {
res.redirect('/login');
} else {
res.redirect('dashboard');
};
});
router.get('/dashboard', (req, res) => {
if(req.session && req.session.key === loginkey) {
helper.render(req, res, "sites/dashboard");
} else {
res.redirect('/');
};
});
router.get('/login', (req, res) => {
log.LogLine(3, "GET /login");
helper.render(req, res, "sites/login");
});
router.get('/logout', (req, res, next) => {
log.LogLine(3, "GET /logout");
if (req.session) {
req.session.destroy(function(err) {
if(err) {
return next(err);
} else {
return res.redirect('/');
};
});
};
});
return router;
})();
如果您想将 index.js 中的内容传递到 routes.js 中的路线,那么您可以执行以下操作。
在您的 routes.js 中,您可以接受一些参数:
module.exports = function(arg1, arg2) {
let router = require('express').Router();
router.get('/', (req, res) => {
// You can now use arg1 and arg2 here
});
// ...
return router;
};
请注意,您需要删除 IIFE 以阻止立即调用该函数。
然后在index.js中调用函数,随便传入什么:
app.use('/', routes('something', 'something else'));
希望对您有所帮助。
问题
我正在使用带有 express 模块的 nodejs 应用程序。为了有一个结构,我将路由拆分为一个 extern routes.js。我想在 req 和 res 参数旁边给这个 route.js 一些其他需要的参数。但是我不知道怎么办。
Index.js
const app = express();
app.use(session({
secret: uuidv4(),
resave: true,
saveUninitialized: true
}));
app.use(helmet());
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/', express.static(path.join(__dirname, '/site/static')));
app.use('/', routes);
routes.js
module.exports = (function() {
'use strict';
let router = require('express').Router();
router.get('/', (req, res) => {
if(!req.session || req.session.key !== loginkey) {
res.redirect('/login');
} else {
res.redirect('dashboard');
};
});
router.get('/dashboard', (req, res) => {
if(req.session && req.session.key === loginkey) {
helper.render(req, res, "sites/dashboard");
} else {
res.redirect('/');
};
});
router.get('/login', (req, res) => {
log.LogLine(3, "GET /login");
helper.render(req, res, "sites/login");
});
router.get('/logout', (req, res, next) => {
log.LogLine(3, "GET /logout");
if (req.session) {
req.session.destroy(function(err) {
if(err) {
return next(err);
} else {
return res.redirect('/');
};
});
};
});
return router;
})();
如果您想将 index.js 中的内容传递到 routes.js 中的路线,那么您可以执行以下操作。
在您的 routes.js 中,您可以接受一些参数:
module.exports = function(arg1, arg2) {
let router = require('express').Router();
router.get('/', (req, res) => {
// You can now use arg1 and arg2 here
});
// ...
return router;
};
请注意,您需要删除 IIFE 以阻止立即调用该函数。
然后在index.js中调用函数,随便传入什么:
app.use('/', routes('something', 'something else'));
希望对您有所帮助。