首页 > 解决方案 > Express - 嵌套目录中每个模板文件的路由和渲染引擎

问题描述

使用 Express Middleware serve-index,可以浏览完整目录,结合server-static可以在导航到文件时呈现图像和文本(以及下载其他不可呈现的二进制文件)。

const express = require("express");
const path = require("path")
const serveIndex = require("./index");

const server = express();

server.use("/posts",
  express.static("./posts/"),
  serveIndex("./posts")
);

server.listen(8080);

我希望当导航到文件系统中任何位置的文件与给定的模板文件扩展名(例如.. Consolidate.js.pug )匹配时,应该使用适当的渲染引擎。.liquid

通常会views/根据需要创建一个专用目录和单独的路由,但我希望将模板文件分散在文件系统中以记录不同的项目。导航到使用 serve-index 的 url 中的路径例如localhost/public/views/project-one将用于index.liquid在该项目的目录中呈现模板。

const express = require("express");
const path = require("path")

const server = express();

var { Liquid } = require('liquidjs');
var engine = new Liquid();

// register liquid template engine
server.engine('liquid', engine.express());

server.set("views", path.join(__dirname, "views"));

// route and file to return is hardcoded
server.get('/', function (req, res) {
  res.render('index') // render `index.liquid`
})

server.listen(8080);

标签: node.jsexpresstemplating

解决方案


推荐阅读