非常基本的问题:我正在编写一个包含少量页面的Web应用程序。这些页面具有通常的共享元素:例如,站点的标题/标头和侧栏都出现在所有页面上。 HTML是静态的(不是动态生成的,它的“ajaxy-ness”是在客户端完成的。)
将这些常用元素导入/“包含”到我的网页中的最佳方法是什么?我使用的解决方案是让HTML文件包含空的占位符
<div id="header"></div>
<div id="leftSideBar"></div>
(...)
然后在jquery的$(document).ready()中执行:
$.get("header.html", function(html) { $("#header").html(html); });
// ....
这是最好的方法吗?我是网络开发的新手。 :)
我想我还可以挖掘出一个类似宏的代码生成工具,我将在HTML文件上运行以替换,例如,带有header.html内容的“#header”。这样加载页面就需要单个HTML文件的请求,这听起来更好。
实现这一目标的智能方法是什么?我相信这个问题已经解决了一千次。
编辑:服务器端用Python + cherrypy编码。 (我假设在做“web 2.0-ish”网络应用时,试图远离动态生成HTML是合理的。如果我错了,请纠正我。正如我所说,我对这个环境很新。)
感谢您的见解,
拉拉
答案 0 :(得分:5)
如果要包含文件,请考虑使用某些后端语言,如PHP或ASP。即使这样做,Javascript也不是真正意义上的。
<?php include 'other_file.php'; ?>
使用javascript执行此操作会导致糟糕的搜索引擎优化,并且页面的加载对于最终用户来说可能看起来很奇怪。如果你真的不想使用后端语言some IDE have a way to handle templates,你可以调查一下。
关于框架,他们中的大多数都有办法处理模板。 ASP.NET具有母版页系统,Ruby on Rails具有布局。
以下是使用Rails的示例:
<html>
...
<div id="content"> <%= yield %> </div>
...
</html>
此处子页面的所有内容都将进入“yield”。这是一个link,可以了解更多信息。
一些框架可以处理多个占位符。
答案 1 :(得分:1)
在某种程度上,它取决于您在服务器端使用的内容来呈现页面。如果您使用服务器端脚本生成页面,您应该能够使用Web框架(例如Django或RubyOnRails),甚至只能使用基本的模板引擎,例如Genshi。基本包含功能甚至可以内置到您正在使用的语言中(即PHP)
如果它只是静态HTML,您可能需要考虑设置某种形式的服务器端包括Apache SSI或NGINX SSI。您需要选择适用于您正在使用的服务器的那个,并且您需要足够的访问权限来安装和配置插件或模块。
或者,您可能希望使用脚本来生成页面(编辑,生成和部署)。使用cat / sed / awk / make(其他有用的参考 - Sed & Awk)的简单方法可能就是您所需要的,或者您可能想要使用模板引擎和Python或Perl等语言。
答案 2 :(得分:0)
我的包含处理服务器端,这意味着来自客户端的请求更少,也可能有其他好处(更容易调试js等)。
拥有服务器进程包括真的不会给它带来很大的压力。