如何在Express.js中定义单独的页面?



我刚刚开始使用express.js,我无法理解如何定义可以在内部链接的离散"页面"(传统意义上的)。

我正在使用Jade作为模板引擎,我看到它是如何将各种组件拉到一起并在app.js中引用它们的(这是npm最初调用的),因此,实际上是我的"索引"。如果能看到一个关于如何构建pageA, pageB, pageC的教程,以便它们可以通过<a href="pageA.html">(或Jade等效)链接到,那就太好了。

我假设这是可能的,对吗?

Express.js本身不提供URL生成,只有一个内置的路由器。

您将需要使用一个额外的包来执行URL生成,或者自己构建它。也许你在这个问题的答案中找到了一些合适的东西:express路由的URL生成

如果你不关心路由生成,想要"硬编码"url,你需要为每个静态页面添加路由,像这样:

// routes.js
app.get("/pageA.html", function(req, res, next) { res.render("static/page_a", { templateLocals: "here" }) };
app.get("/pageB.html", function(req, res, next) { res.render("static/page_b") };

或者,如果你有很多这样的页面,你可以使用控制器:

// static_page_controller.js
module.exports = function(pageTemplate) {
  return function(req, res, next) {
    return res.render("static/" + pageTemplate);
  }
}

并像这样使用:

// routes.js
var staticController = require("./static_page_controller");
app.get("/pageA.html", staticController("page_a"));

最新更新