如何使用 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,因为它添加了很多我并不真正需要的功能。
我一直在努力寻找一种方法来编写 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,因为它添加了很多我并不真正需要的功能。