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

时间:2016-02-18 11:45:16

标签: html node.js include partials

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

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

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

2 个答案:

答案 0 :(得分:1)

以下是对简单用例的最佳解决方案的回顾(有点过期):preprocess(有更多选项,可以使用自定义或环境变量)和ssi(由@Alex K.提到,它很简单,坚持Apache风格的服务器端包括)。我排除了玉,因为它添加了许多我并不真正需要的功能。

答案 1 :(得分:0)

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

布局

基本方法是创建一个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库编译与所请求路径匹配的模板