目前,我的网站使用静态手写 HTML 页面。我手动将导航菜单添加到所有页面。我希望能够维护一个包含菜单 HTML 代码的单个用户资源文件,并从网站上的所有其他 HTML 文件中引用该文件。我知道我们可以使用服务器端包含和客户端包含来做到这一点。但是在阅读了每种方法的优缺点之后,我对我应该使用哪种方法来适应我的情况感到困惑。
PS 我的服务器不是 PHP 服务器。
谢谢!
目前,我的网站使用静态手写 HTML 页面。我手动将导航菜单添加到所有页面。我希望能够维护一个包含菜单 HTML 代码的单个用户资源文件,并从网站上的所有其他 HTML 文件中引用该文件。我知道我们可以使用服务器端包含和客户端包含来做到这一点。但是在阅读了每种方法的优缺点之后,我对我应该使用哪种方法来适应我的情况感到困惑。
PS 我的服务器不是 PHP 服务器。
谢谢!
平面 HTML 文件不能相互包含。您必须使用一种或另一种服务器端脚本语言。
您的服务器是 Apache (Linux) 的某种风格吗?如果是,它可能会启用 php。请咨询您的托管服务提供商。
不管怎样,经验法则如下(适用于任何后端框架,但详细与 php 相关):
1) 在一个 HTML 页面上编码你的导航
2) 将其保存为 php 文件(或按照服务器端的程序进行操作——从现在开始,我继续假设您将使用 php)
3) 将所有页面保存为 .php,以便能够包含新的可重用元素
4) 用 php include 语句替换所有页面中的导航部分 HTML,包括您的导航文件,例如 nav.php 例如,
include( $path . 'nav.php')
5)如果您希望包括“you-are-here”突出显示,a)在所有页面的 body 标签上设置一个 id b)在您包含的 nav.php 中的每个链接上设置一个 id
6) 在您的 CSS 中,列出所有可能的页面 ID 和导航链接 ID 组合,例如
#homepage #homeLink,
#contactPage #contactLink,
#aboutPage #aboutLink {
/* format your "active" nav link here */
}
最后,您希望网站加载速度更快且易于维护。如果您使用客户端 javascript 来执行 AJAX 以获取模块/小部件,那么您将添加更多 http 请求,并且该站点将明显变慢。使用服务器组装页面是可行的,但是您会失去 javascript 动画和 AJAX 的优势。服务器和客户端的混合可能会令人困惑,但可能是最佳的。如果您的服务器是 Node.JS,那么您将拥有巨大的优势,因为可以将服务器上的相同功能配置为适用于客户端。
例如,您可以使用服务器来组装导航栏作为索引文件的一部分,并使用客户端在用户通过 ajax 登录后加载更新的导航栏等内容。可以在 Node 和浏览器中使用相同的功能 - 例如,jQuery 或 YUI 在 node.js 中可用。
所以这真的取决于你的服务器,以及你想做多少工作。
到目前为止,我能给你的最简单、最快捷的解决方案是使用服务器端模板。不知道你的服务器,使用 jQuery 和 load 方法对于客户端模板加载很有用。
或者,您可以使用 Jquery 的 .load() 函数将另一个文本文件加载到导航中(如果在 txt 文件中使用 html 标记,它将加载为 html),但如果用户禁用了 JavaScript,这将无用。
请参阅下面的 Jquery 文档链接