【问题标题】:What is the subsitute for frames?什么是框架的替代品?
【发布时间】:2011-04-29 16:27:04
【问题描述】:

假设我有一个包含 50 个网页的网站。每个页面由

  1. 标题
  2. 导航
  3. 左侧内容
  4. 右侧内容
  5. 页脚

不使用

  1. 框架
  2. 服务器端编程
  3. 第三方工具和软件
  4. 框架

我需要将这 5 个部分的代码(HTML 标记)分别放在这 50 个页面中吗? “一次编码,再次使用”这个术语发生了什么?另外,如果我想改变任何东西,我需要在 50 个地方改变它。这只是多余的。我可以这样使用吗?

<object type="text/html" height="100%" width="100%" data="header.html"></object>

请原谅我的愚蠢问题。努力学习!

【问题讨论】:

  • 您对框架、服务器端编程以及宇宙中的所有工具和框架有什么问题?这有点限制你的选择。如果它不是服务器端,它是客户端,这意味着 javascript 或框架,它们有明显的缺点。你真的应该使用 SSI 或类似的东西。
  • 因为我是 Web 开发的新手,我的旅程从 HTML/XHTML、CSS、XML、Javascript、AJAX 开始,最后是 PHP 和 SQL(按此顺序)
  • 很高兴听到。 Web 不仅仅是客户端。像您在问题中描述的那样,对于一个健壮的网站来说,像 PHP 这样的语言是必不可少的。
  • 关于框架,我讨厌它们。我不想成为一个复制粘贴程序员。我认为,这是我个人的意见,freworks 应该只由有经验的高级和专业人士使用。例如,960 等 CSS 框架只是让您设计和开发网站,而无需深入了解 CSS。它们确实可以节省时间,但对于像我这样的新人来说,首先要与 CSS 兼容,而不是在必要时使用它们。

标签: html iframe frame


【解决方案1】:

我需要将这 5 个部分的代码(HTML 标记)分别放在这 50 个页面中吗?

是的

“一次编码,再次使用”这个术语发生了什么变化?

您拒绝了所有使 HTML 成为可能的技术(好吧,除非您计算从头开始编写自己的模板引擎(没有第三方工具)并在构建时而不是按需运行它(没有服务器端代码),或使用 JavaScript(这太疯狂了))。

我可以这样使用吗? &lt;object type="text/html" height="100%" width="100%" data="header.html"&gt;&lt;/object&gt;

这实际上是一个&lt;iframe&gt;,只是功能较少且浏览器支持较弱。

【讨论】:

  • 这听起来不粗鲁,因为我是新手。我在 IE9、FF4、GC10、AS5 和 Opera11 上进行了相同的测试,效果非常好。然而,在我读过的所有书籍和其他学习资源(如 CBT)中,我从未见过这样的做法,这让我觉得我错过了一些东西。只是想知道为什么不能以类似于使用
    相关元素的方式这样做,不应该用于导航。
  • @JAA,一方面,您将向服务器发出 6 个不同的请求,增加了两次旅行时间(往返服务器)每个请求。您的页面还必须针对每个请求重新调整其布局。这甚至没有涉及维护这个应用程序的噩梦、丢失书签等的复杂性
【解决方案2】:

您描述了服务器端语言的确切用例。

让我解释一下你的方法的问题。如果您以这种方式创建您的网站,拥有一个 index.html 以及您通过 objectiframe 包含的其他 5 个部分,这将意味着对您的服务器的 6 个请求(这当然不是一个好的做法)。

事情会这样发生:

  • 浏览器请求您的index.html
  • 解析它,发现它还需要请求header.html和其他四个
  • 从服务器请求所有这 5 个 html

相反,您可以请求index.php,例如(如果您使用 PHP),让 PHP 构造 ONE HTML 资源(可能包括其他 PHP 文件,例如 header.php)并将其发送到浏览器,它会愉快地显示它。

您不必打破学习顺序,只需为此特定目的使用一些小部分(完全只使用一个命令)。灵活一点,你会发现它在这项业务中非常有用:)。

举个例子:

index.php

<!DOCTYPE html>
<html>
...
<body>

<?php include 'header.php'; ?>

<?php include 'navigation.php'; ?>

...

<?php include 'footer.php'; ?>

</body>
</html>

在您的 PHP 文件中,您只能有简单的 HTML,只是文件扩展名会有所不同。要编写 PHP 命令,您可以使用&lt;?php whatever ?&gt;

【讨论】:

  • 谢谢伙计。我想这就是我没有看到 用于此目的的确切原因,它不应该以这种方式使用。干杯
【解决方案3】:

您也可以通过组合不同的部分来实现目标,这意味着您将标题写入一个文件,导航到另一个文件并将内容写入第三个文件,然后将它们组合到实际网页中。 (基本上是制作自己的模板引擎)。如(在 UNIX 中)

cat header.html navigation.html body1.html > page1.html

不是理想的解决方案,但这样您只需要更改一次。但是对于任何真实的东西,已经建议的服务器端脚本通常是最好的选择。

【讨论】:

    【解决方案4】:

    如果您不想使用服务器端编程(这是为您设计的),您唯一的选择是在运行时调用 AJAX 来填充公共元素。

    然而,这不会提供非常好的用户体验,因为页面在似乎完成加载后会慢慢加载。

    真的应该为此使用服务器端编程。

    【讨论】:

    • 谢谢伙计。但这是一个漫长的学习过程,我想在跳AJAX之前学习HTML/XHTML
    【解决方案5】:

    一种常见的解决方案是服务器端包含 (SSI),它允许您在多个页面中包含一个 html 标记块(以及其他内容)。如果您使用 PHP,请务必考虑 PHP 包括:http://www.w3schools.com/php/php_includes.asp

    【讨论】:

    • 谢谢 Eric,现在开始学习 SSI。甚至不知道它的存在。
    猜你喜欢
    • 2019-05-12
    • 2019-02-22
    • 2011-05-07
    • 2012-04-24
    • 2019-12-03
    • 2010-09-17
    • 2012-03-27
    • 2012-09-30
    • 2010-10-20
    相关资源
    最近更新 更多