我一直在努力寻找一种方法来编写HTML部分(header.html,nav.html等),并将它们作为构建过程的一部分包含在另一个HTML页面中。
我知道Apache中的服务器端包含或包含在PHP中,但我想知道是否有办法在Node中执行此操作?我尝试过使用像Jade或Handlebars这样的模板引擎,但它们并没有真正为此而构建。 Jade最接近我想要实现的目标,但我不想使用语法,并且没有好的方法来使用常规HTML。对于其他每一个,您必须在HTML中包含一个脚本标记,我必须将其剥离以进行生产。
我只是想构建一个静态网站,并希望保持我的构建过程简单(我正在使用NPM脚本)。您是否知道以其他方式复制粘贴每个页面的网站常用部分?你如何在工作流程中管理这个?
答案 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库编译与所请求路径匹配的模板