NodeJS环境下如何将HTML文件作为模板复用至其他HTML文件?
服务端实现多页面站点导航栏复用的可行方案
以下方案均会在服务端完成导航栏代码与页面内容的拼接,最终返回给客户端的是完整HTML,不会出现客户端渲染的闪烁问题,也对SEO更友好:
- 服务端包含(SSI)
如果你用Nginx、Apache这类支持SSI功能的静态服务器,直接把导航栏代码单独抽为nav.html文件,在每个页面需要插入导航的位置添加<!--#include virtual="/nav.html" -->注释即可。服务器收到请求后会自动将导航代码拼入页面再返回,不需要额外后端服务支撑,纯静态站点即可使用。 - 后端模板引擎复用
如果你有后端服务,直接用对应技术栈的模板引擎自带的导入/继承功能即可:- Node.js 生态的 EJS、Nunjucks、Pug 等模板,可将导航抽为独立模板片段,在页面模板中用
<%- include('nav.ejs') %>这类语法引入;也可以定义全局母模板,把导航、页脚这类公共区域写在母模板中,业务页面仅需继承母模板、填充内容区即可。 - Python 生态的 Jinja2、Django 模板,PHP 生态的 Smarty、Laravel Blade,Java 生态的 Thymeleaf 等都有完全对应的功能,逻辑一致。
- Node.js 生态的 EJS、Nunjucks、Pug 等模板,可将导航抽为独立模板片段,在页面模板中用
- 静态站点生成器(SSG)布局复用
如果你用 Hugo、Hexo、VitePress、Next.js 静态导出这类 SSG 工具搭建站点,直接使用框架自带的全局布局功能即可:将导航栏写在全局布局文件中,所有内容页指定套用该布局,构建阶段工具会自动将导航注入到每个页面的对应位置,最终生成的就是拼接完成的静态HTML文件,可部署到任意静态服务器直接使用。 - 反向代理层注入
如果你不方便修改现有站点的页面源码或构建逻辑,可以在 Nginx、OpenResty 这类反向代理层配置插入规则,在代理返回HTML响应时自动将导航栏代码注入到指定位置,不需要修改原有站点的业务逻辑。
内容的提问来源于stack exchange,提问作者mbg206
相关产品推荐
相关产品推荐

