SHTML 的用途和唯一性是什么?

最近,当我看到一个带有. SHTML 扩展名的站点时,我开始了解 SHTML。

SHTML 的用途是什么? 它与 HTML 和 DHTML 在哪些方面有所不同?

113905 次浏览

它只是带有 服务器端包括的 HTML。

SHTML 是一个文件扩展名,它让 Web 服务器知道文件应该使用服务器端包含(SSI)进行处理。

(HTML 是... ... 你知道它是什么,而 DHTML 是微软的名字的 Javascript + HTML + CSS 或东西)。

您可以使用 SSI 在页面中包含公共的页眉和页脚,这样就不必重复那么多代码。更改一个包含的文件将同时更新所有页面。你只需要像往常一样把它放到你的 HTML 页面中。

它嵌入在一个标准的 XML 注释中,看起来像这样:

<!--#include virtual="top.shtml" -->

它已经在很大程度上被其他机制所取代,比如 PHP 包,但是一些托管软件包仍然支持它,除此之外没有其他支持。

你可以阅读更多的 在这篇维基百科文章里。


“既然现在是2021年,我就要回答这个问题,因为最初的答案从一个人的角度回答了这个问题,他生活在 SSI 非常普遍的时代,然而,在当代网络发展中,SSI 几乎已经过时。”


SSI 是 Server Side Includes的缩写

“ SHTML” ,或者 强 > (.shtml)不过是一个简单的文件扩展名,用于向开发人员和浏览器表明当前文档是实现 < strong > “服务器端包括” < strong > 「 HTML 文件」

我认为解释 SSI的最好方法是将它们与 C 语言进行比较(不要与 C 风格语法混淆)。C 语言之所以成为一个很好的参考点,有两个原因:

  • 大多数上过计算机科学学校的软件/网络开发人员至少“有点”熟悉其中一种 C 语言(对我来说,它曾经是,现在仍然是 C + +)。

  • B.语法显然是从最初的 C 语言衍生出来的,因为它与 C 语言中的 #include语句完全相同。



所以现在如果你熟悉 C 语言,你可能已经对我描述的内容有了一个很好的概念。

如果我继续,我会说:

“它们是网页的预处理器指令,开发人员使用它们来保持代码的 DRY 并维护一致的页眉和页脚,这些都是通过标准的 C 指令语法(例如 #includes#ifdef#define#if等)实现的。.)

那你应该很清楚他们是什么。




如果你以前没有学过 C 语言,那么以下摘录适合你:

在 C 语言中,有用于添加库、类、接口、模板等的语法语句。它们看起来像这样:

  • #include

  • #define

  • #undef

  • #ifdef

  • #ifndef

等等。


那么,“在坚果壳里”,同样的语法实现在网页通过 < strong > “服务器端包括” ,或 强 > SSI的强


  • 关键差异: 在程序中使用 C 指令的地方,在网站中使用 SSI 指令。

  • 键-相似度 < em > 它们都导入程序/网站使用的代码。



SSI 看起来像这样:

<!--
#include ifheader="reference-page" file="header.html" else="header-alt.html"
-->


  • SSI 也有 #if#else等等。

既然我们已经确定了 SSI 的外观及其语法,我将解释它们在当代世界中的作用。

我是在 二零二一年年中中写这篇文章的,所以需要注意的是,据我所知,2012年是 SSI 最后一次更新,而且,它们是由 W3C 标准化的。今天我们真的不需要它们,因为我们有更强大的技术。首先是模板引擎(PugHandlebars等等)。.以及像 VueReact这样的框架)。现在,如果您看到一个页面,并且它有扩展名 SHTML,那么它很可能是一个旧页面,并且可能需要更新。我之所以找到并回答这个问题,是因为我的一位教授有一个使用 SSI 的网站,我注意到 edge 没有正确加载它ーー标题会掉到文本体中。看到像 Edge 这样的新浏览器,没有正确地渲染一项早已过时的技术,这是一个相当好的迹象,表明对这项技术的支持正在下降,而且正在消失在夕阳中。最后,如果您看到 < strong > “ SHTML”文件扩展名ーー 也就是说。 foo.shtmlーー您现在知道它为什么在那里,并且您现在知道它在那里做什么,

最后一点:

在 XHTML 时代,SSI 很大。但是,在当代的 Dev-World 中,SSI 的最佳用途是作为教师,或者提醒人们,一种技术可以非常流行,标准化可以由一个以标准化有史以来最具体的网络技术(W3C)而闻名的组织来维护,但是它仍然可以以罗马的方式崩溃。SSI 是一个伟大的想法,但是为什么 web 是用 C + + 语言编写的,而不是真正用 C + + (JavaScript)编写的,这是有原因的。