如何使用 Node 制作模块化 HTML 页面(部分)?

How to make modular HTML pages (partials) using Node?

我一直在努力寻找一种方法来编写 HTML 部分(header.html、nav.html 等)并将它们包含在另一个 HTML 页面中作为我构建过程的一部分。

我知道 Apache 中的服务器端包含或 PHP 中的包含,但我想知道在 Node 中是否有办法做到这一点?我试过使用像 Jade 或 Handlebars 这样的模板引擎,但它们并不是真正为此而构建的。 Jade 最接近我想要实现的目标,但我不想使用语法,也没有使用常规 HTML 的好方法。对于其他每一个,你必须在你的 HTML 中包含一个脚本标签,我必须将其剥离以用于生产。

我只是想构建一个静态网站,并希望让我的构建过程保持简单(我正在使用 NPM 脚本)。您知道为每个页面复制粘贴我网站的公共部分的其他方法吗?您如何在工作流程中管理它?

这实际上是 jade 或其他诱人引擎的完美用例。

布局

基本方法是创建一个 layout.jade 文件,其中包含所有不变的内容并规定网站的总体布局。

layout.jade

doctype strict
html(xmlns='http://www.w3.org/1999/xhtml')
  head
    meta(http-equiv='Content-Type', content='text/html; charset=utf-8')
    title some title
  body
    | Static content like nav
    block pageContent

基于路线的内容

在布局文件中,您可以定义一系列 block 作为要从其他模板注入的内容的占位符。该模板将扩展 layout 并注入相关块,如下所示:

some-route-template.jade

extends layout

block pageContent
  | I am content from the relevant page

编译

此时唯一剩下的就是使用jade库编译匹配请求路由的模板

这里是对简单用例的最佳解决方案的回顾(有点过期):preprocess (has more options, can use custom or environment variables) and ssi(@Alex K. 提到,它非常简单并且坚持使用 Apache-样式服务器端包括)。我排除了 jade,因为它添加了很多我并不真正需要的功能。