我想知道是否可以从express.js中的路由器中提取前缀。
这是我的index.js 文件:
const express = require("express");
const router = express.Router();
const admin = require("./admin");
const home = require("./home");
router.use("/admin", admin);
router.use("/", home);
// Catch All Other Pages
router.get("*", (req, res) => {
res.render("404", { title: "404 Not Found" });
});
module.exports = router;
这是我的管理路由文件:
const express = require("express");
const router = express.Router();
router.get("/", function(req, res) {
res.render("admin", { title: "Admin Menu" });
});
router.get("/settings", function(req, res) {
res.render("admin/settings", { title: "Admin Menu | Settings" });
});
router.get("/logout", function(req, res) {
//handle logout logic
res.redirect("/");
});
module.exports = router;
在index.js 文件中,我将前缀设置为“/admin”;
我可以知道在 admin.js 文件中提取这个前缀吗? 例如:
const express = require("express");
const router = express.Router();
// Require prefix
const prefix = router.getPrexix()?
router.get("/", function(req, res) {
res.render("admin", { title: "Admin Menu", prefix });
});
router.get("/settings", function(req, res) {
res.render("admin/settings", { title: "Admin Menu | Settings", prefix });
});
router.get("/logout", function(req, res) {
//handle logout logic
res.redirect("/");
});
module.exports = router;
可以这样做吗? 我可以在哈巴狗模板中重复使用“/admin”。
最佳答案
express ,req.baseUrl
是安装路由器的 URL,在您的情况下为 "/admin"
。
而且,你有req.path
这就是路线匹配的内容。
而且,你有req.originalUrl
是原始 URL,因此您始终可以将其与上述任意一个结合使用来查看整个图片。
这里有一个小例子来说明:
const express = require('express');
const app = express();
const router = express.Router();
router.get("/new", (req, res) => {
console.log("baseUrl", req.baseUrl); // "/admin"
console.log("path", req.path) // "/new"
console.log("originalUrl", req.originalUrl); // "/admin/new"
res.send("new");
});
app.use("/admin", router);
app.listen(80);
关于javascript - 是否可以从express.js中的路由器中提取前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275240/