什么是SHTML

bal*_*log 103 html shtml

最近我开始了解SHTML.而且我也看到扩展名为.shtml的网站.

SHTML的用途与HTML和DHTML的不同之处在于什么?

Rob*_*ant 150

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

(HTML是......你知道它是什么,DHTML是微软的Javascript + HTML + CSS之类的东西).

您可以使用SSI(例如)在页面中包含一个公共页眉和页脚,这样您就不必重复编码,并且更改一个包含的文件会立即更新所有页面.您只需将其放入HTML页面即可.

它嵌入在标准XML注释中,如下所示:

<!--#include virtual="top.shtml" -->
Run Code Online (Sandbox Code Playgroud)

它已经在很大程度上被其他机制所取代,例如PHP包含,但是一些托管软件包仍然支持它而不是其他任何机制.

您可以在本文中阅读更多内容.

  • 我发现非程序员/前端人员使用和理解它非常方便.给予它们包括(这些是基本上重要的),而不必进入和理解像PHP这样的东西. (5认同)
  • 确实是@Webwoman。当整个html文档在服务器端构建并在一个响应中发送回浏览器,并且您希望可重用的“部分”(例如,页眉,页脚,导航,跨页面的其他共享内容)具有某种可组合性时,服务器端包含项将非常有用..)。在大多数情况下,使用ajax并在前端动态构建视图(在jquery,angular,vue,react应用等中很常见)基本上会取代该功能 (2认同)
  • @Webwoman很久以前,甚至。如今,这是一个非常特殊的情况,但要说的是,如果您提供静态文件但只需要一点点动态性(例如,配置注入),那么对于老派而言,这仍然是一个超快速的解决方案。 (2认同)

Gum*_*mbo 18

它只是带有服务器端包含的 HTML .


JΛY*_*ÐΞV 9


\n

\n

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

\n
\n
\n
“SSI 是缩写词:Server Side Includes。”
\n

“SHTML”,或者(.shtml)只不过是一个简单的文件扩展名,用于向开发人员和浏览器表示当前文档是一个“HTML 文档”,它实现了“服务器端包含”

\n

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

\n
    \n
  • 答:大多数上过计算机科学学校的软件/Web 开发人员至少“稍微”熟悉其中一种 C 语言(对我来说过去是,现在仍然是 C++)。

    \n
  • \n
  • B. 语法显然源自原始C语言,因为它与C语言中的语句完全相同#include

    \n
  • \n
\n
\n
\n
现在,如果您熟悉 C 语言,您可能已经对我所描述的内容有了很好的了解。
\n
\n
而且,如果我继续,我会说:
\n
\n

“它们是网页的预处理器指令,开发人员实施这些指令是为了保持代码干燥并保持一致的页眉和页脚,这些指令是通过标准 C 指令语法(例如 、 、#includes#ifdef#define... #if)实现的

\n
\n
那么您可能确切地知道它们是什么。
\n
\n




\n

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

\n

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

\n
    \n
  • #include

    \n
  • \n
  • #define

    \n
  • \n
  • #undef

    \n
  • \n
  • #ifdef

    \n
  • \n
  • #ifndef

    \n
  • \n
\n

ETC...

\n
\n

好吧,“简而言之”,相同的语法是通过“服务器端包含”在网页中实现的,SSI或者

\n
\n
    \n
  • 主要区别: C 指令用于程序中,而 SSI 则用于网站中。

    \n
  • \n
  • 关键相似性 它们都导入程序/网站使用的代码。

    \n
  • \n
\n
\n
\n
SSI 如下所示:
\n
\n<!--\n #include ifheader="reference-page" file="header.html" else="header-alt.html" \n-->\n\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • SSI 还具有#if#else等...
  • \n
\n
\n

现在我们已经确定了 SSI 的外观及其语法,我将根据当代世界来解释它们是什么。

\n

我是在2021 年中写这篇文章的,因此值得注意的是,据我所知,2012 年是 SSI 的最后一次更新;此外;它们由 W3C 标准化。今天我们真的不需要它们,因为我们拥有更强大的技术。第一个是模板引擎(PugHandlebars等...以及诸如Vue、 和 之类的框架React)。现在,如果您看到一个页面,并且它的扩展名为 SHTML,那么它很可能是一个旧页面,并且可能需要更新。我发现并回答这个问题的原因是因为我的一位教授有一个使用 SSI 的网站,我注意到 Edge 无法正确加载它 \xe2\x80\x94 标题会落入文本正文中。看到像 Edge 这样的新浏览器无法正确呈现一项已经过了鼎盛时期的技术,这是一个很好的迹象,表明该技术的支持正在下降,并且正在逐渐消失。总结一下;如果您看到“SHTML” 文件扩展名 \xe2\x80\x94 foo.shtml\xe2\x80\x94 您现在知道它为什么在那里,并且您现在知道它是什么,它在那里做什么,

\n
快速最后一点:
\n

在 XHTML 时代,SSI 非常重要。但是,在当代的开发世界中,SSI 最好被用作老师或提醒,一种技术可以非常流行,并且标准化可以由一个以标准化有史以来最具体的 Web 技术而闻名的组织 (W3C) 来维护,但它仍然可以以罗马方式崩溃。SSI 是一个好主意,但是 Web 是用 C++ 编写的语言编写的,而不是实际用 C++ (JavaScript) 编写的,这是有原因的。

\n