【问题标题】:Avoid repeated HTML避免重复的 HTML
【发布时间】:2012-12-15 20:52:01
【问题描述】:

我有两个 HTML 页面。 我想避免重复标记,如头部、导航等。 例如,这里是一页:

<head><title>Los Pollos Hermanos</title></head>
<body>About Us</body>

还有一个:

<head><title>Los Pollos Hermanos</title></head>
<body>Contacts</body>

我不喜欢重复,所以,我想把head+title部分移出,到一个单独的文件,然后从其他页面调用这个单独的文件。这是正确的方法吗?做法是什么?

【问题讨论】:

  • 您只是创建一个静态网站,还是您正在使用特定的引擎?

标签: html


【解决方案1】:

这取决于您使用的语言。如果您想在 HTML 中严格执行此操作,请查看您的服务器是否支持 shtml。如果是这样,您可以使用包含将文件读入另一个文件。

<!--#include FILE="filename.html"--> 

【讨论】:

  • 我措辞不正确。我知道它不是 HTML,但如果服务器设置为支持它,这是最容易添加的东西,而不需要处理 PHP、ASP 等语言。
【解决方案2】:

使用模板语言。具体选择哪一种取决于您的服务器支持什么以及您的个人喜好。

在其他条件相同的情况下,我会使用Template Toolkit,因为它可以在构建时单独使用(即在您上传之前,服务器无需支持静态文件以外的任何内容) 感谢ttree,并且可以在 Perl 的 runtime 中使用。

有一个很好的introductory tutorial 用于使用 TT 生成网页内容。

【讨论】:

    【解决方案3】:

    你不能直接从 html 中生成,但是如果你使用 php 或 asp 或类似的东西来生成 html,那就很简单了。检查include if php,例如

    【讨论】:

      【解决方案4】:

      您可以将通用代码放在 .tpl 文件中,并将该链接包含在页面中。例如

      <!--#include virtual="../_tpl/header.tpl" --> 
       <div class="content">
      
        some code goes here...
      
      </div>
      

      并在标题模板中放置所有常用代码,例如

      <head>
          <meta http-equiv="content-type" content="text/html; charset=utf-8" />
          <title>PAGETITLE</title>
          <meta name="Keywords" content="" />
          <meta name="Description" content="" />
          <meta http-equiv="Content-Style-Type" content="text/css" />
          <meta http-equiv="Content-Script-Type" content="text/javascript" />
      
      
          <link rel="stylesheet" type="text/css" media="all" href="..." />
      
          <script type="text/javascript" src="....."></script>
      
      </head>
      

      【讨论】:

        【解决方案5】:

        一个经典的方法是有一个包含页脚和页眉的布局。然后你用你的布局装饰你的页面:

        _________layout________
        |  ________________   |
        |  |    header     |  |
        |  |_______________|  |
        |  _________________  |
        |  |               |  |
        |  |  specific     |  |
        |  |    page       |  |
        |  |               |  |
        |  |_______________|  |
        |  ________________   |
        |  |    footer     |  |
        |  |_______________|  |
        |_____________________|
        

        这是大多数 Web 框架所做的。

        【讨论】:

          【解决方案6】:

          在 ASP.Net 中,您可以使用所谓的母版页。在 ASP.Net MVC 中,类似的概念使用 Layout 页面。您在主文件中定义所有这些内容,并设置一个标签来显示“更改”内容的显示位置。然后其他文件(页面)定义模板中这些已定义位置中显示的内容。

          【讨论】:

            猜你喜欢
            • 2021-08-01
            • 1970-01-01
            • 2015-09-01
            • 2021-08-23
            • 1970-01-01
            • 1970-01-01
            • 2019-06-07
            • 1970-01-01
            • 2020-08-21
            相关资源
            最近更新 更多