709 字
4 分钟
在 HTML 页面中引入公共部分的代码

在前端开发中,导航栏、侧边栏和页脚往往是全站通用的。如果每个页面都复制一遍这些代码,一旦需要修改某个菜单项,就必须手动更新成百上千个 HTML 文件。

为了解决这个问题,我们可以采用 “组件化” 的思想:将重复部分提取为独立文件,在运行时动态加载。


一、 核心步骤#

1. 提取公共 HTML 片段#

将重复的 HTML 结构保存为独立文件(通常存放在 common/com/ 目录下)。

head.html (顶部导航示例)

<div class="header-main">
<div class="user-profile">
<span>欢迎您,王婷 (Admin)</span>
<button id="logout-btn">退出登录</button>
</div>
</div>

side.html (侧边栏菜单示例)

<div class="sidebar-container">
<ul id="menu">
<li><a href="index.html"><i class="fa fa-home"></i> 首页</a></li>
<li><a href="users.html"><i class="fa fa-user"></i> 用户管理</a></li>
</ul>
</div>

2. 在主页面中预留占位符#

在需要插入公共代码的地方,放置一个带有唯一 id 的容器。

3. 使用 jQuery 动态注入#

通过 jQuery 的 .load() 方法,将外部 HTML 的内容填充到占位符中。

test.html (完整示例)

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>后台管理系统</title>
<link href="css/style.css" rel="stylesheet">
<script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="main-layout">
<div id="header-placeholder"></div>
<div class="content-wrapper">
<h1>欢迎进入控制台</h1>
</div>
<div id="sidebar-placeholder"></div>
</div>
<script>
$(function() {
// 加载头部
$("#header-placeholder").load("com/head.html", function() {
console.log("头部加载完成");
});
// 加载侧边栏
$("#sidebar-placeholder").load("com/side.html");
});
</script>
</body>
</html>

二、 运行原理与注意事项#

  1. 跨域限制 (CORS): 由于 .load() 使用了 AJAX 技术,如果你直接双击 HTML 文件(地址栏显示 file:///...)在浏览器打开,通常会因为安全策略导致加载失败。必须在本地服务器(如 Live Server, Nginx, Apache)环境下运行。
  2. 异步加载.load() 是异步的。如果你需要给加载进来的按钮绑定事件,必须在回调函数中执行,或者使用事件委托
// 正确方案:事件委托
$(document).on("click", "#logout-btn", function() {
alert("执行退出逻辑");
});
  1. 样式与脚本: 公共片段 HTML 不需要包含 <html>, <head>, <body> 标签,直接写业务结构即可。

三、 2026 年的进阶方案建议#

虽然 jQuery 方案简单好用,但随着技术演进,你可以考虑以下替代方案:

  • 轻量级场景:使用原生 JavaScript 的 fetch()innerHTML 实现,摆脱对 jQuery 的依赖。
  • 工程化场景:使用 ViteWebpack。它们支持在构建阶段将 HTML 片段合并(HTML Inlining),用户访问时不需要发起额外的网络请求。
  • 组件化场景:如果项目变得复杂,直接转向 VueReact,它们天生支持组件复用。

总结#

通过 jQuery.load() 引入公共部分,我们实现了 “一处修改,处处生效”。对于中小型静态项目或者传统的后台管理模板,这依然是一个极具性价比的解决方案。

在 HTML 页面中引入公共部分的代码
https://sw.rscclub.website/posts/gghtml/
作者
杨月昌
发布于
2016-02-08
许可协议
CC BY-NC-SA 4.0