javascript - 是否可以从express.js中的路由器中提取前缀?

标签 javascript node.js express pug

我想知道是否可以从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/

相关文章:

Node.js - 快速 - session

javascript - 在浏览器中运行开发服务器 [如 stackblitz/codesandbox]

javascript - jQuery - 未选中的单选按钮不返回值

javascript - websockets/ws 类型错误

Node.js HTML5 样板服务器配置集成

javascript - 使用 async.apply 时如何保留 this 的值?

javascript - CSS Qualtrics 热点

javascript - 单元测试如何访问对象属性

javascript - 如何在xampp的子目录中运行react应用程序?

node.js - 将图像作为框架添加到 gif