我想做什么
if req is from mobile
first check these routes
router.use('/', mobileRoutes);
then ones below
router.use('/', routes);但据我所知,express在每次请求时都会遍历所有use语句,它只运行它们一次,并将路由处理程序放入某种数组中。会被请求击中。
对于一些urls,我想服务器不同的页面,但不是全部(loginPage,registrationPage等)。
是否有可能进行有条件的路由,在满足某些条件的情况下预先安排更多的路由。
我要做的是:
router.use(function (req, res, next) {
let md = new MobileDetect(req.headers["user-agent"]);
if (md.mobile()) {
req.url = '/mobile'+req.url;
}
next();
});
//mobile routes
router.use("/mobile", require("./mobile"));但它完全挡住了下面所有的路线。
我想要一个干净的解决方案,另一个不干净的选项是向单个路由添加中间件,但这会不断地混淆代码。
发布于 2018-03-26 16:26:08
我的条件路由解决方案:
index.js
.....
//mobile routes
router.use("/", require("./mobile"));
router.get("/", require("./get"));
.....mobile.js
const express = require("express");
const router = express.Router();
const MobileDetect = require("mobile-detect");
router.use(function (req, res, next) {
let md = new MobileDetect(req.headers["user-agent"]);
(md.mobile())? next() : next("router")
});
router.get("/", function (req, res) {
res.send({ query: req.query });
});
module.exports = router;https://stackoverflow.com/questions/49495319
复制相似问题