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包含,但是一些托管软件包仍然支持它而不是其他任何机制.
\n
\n\n“既然已经是 2021 年了,我就要回答这个问题,因为最初的答案是从一个生活在 SSI 非常普遍的时代的人的角度回答这个问题的,然而,它们在当代 Web 开发中几乎已经过时了。”
\n
Server Side Includes
。”“SHTML”,或者(.shtml)
只不过是一个简单的文件扩展名,用于向开发人员和浏览器表示当前文档是一个“HTML 文档”,它实现了“服务器端包含”。
我觉得解释SSI的最好方法是将它们与 C 语言进行比较(不要与C 风格语法混淆)。C 语言成为良好参考点的原因有两个:
\n答:大多数上过计算机科学学校的软件/Web 开发人员至少“稍微”熟悉其中一种 C 语言(对我来说过去是,现在仍然是 C++)。
\nB. 语法显然源自原始C语言,因为它与C语言中的语句完全相同#include
。
\n\n“它们是网页的预处理器指令,开发人员实施这些指令是为了保持代码干燥并保持一致的页眉和页脚,这些指令是通过标准 C 指令语法(例如 、 、
\n#includes
、#ifdef
等#define
...#if
)实现的
在C语言中,有一些语法语句,用于添加库、类、接口、模板等,它们看起来像这样:
\n#include
#define
#undef
#ifdef
#ifndef
ETC...
\n好吧,“简而言之”,相同的语法是通过“服务器端包含”在网页中实现的,SSI
或者
主要区别: C 指令用于程序中,而 SSI 则用于网站中。
\n关键相似性 它们都导入程序/网站使用的代码。
\n\n<!--\n #include ifheader="reference-page" file="header.html" else="header-alt.html" \n-->\n\n
Run Code Online (Sandbox Code Playgroud)\n#if
、#else
等...我是在2021 年中写这篇文章的,因此值得注意的是,据我所知,2012 年是 SSI 的最后一次更新;此外;它们由 W3C 标准化。今天我们真的不需要它们,因为我们拥有更强大的技术。第一个是模板引擎(Pug
、Handlebars
等...以及诸如Vue
、 和 之类的框架React
)。现在,如果您看到一个页面,并且它的扩展名为 SHTML,那么它很可能是一个旧页面,并且可能需要更新。我发现并回答这个问题的原因是因为我的一位教授有一个使用 SSI 的网站,我注意到 Edge 无法正确加载它 \xe2\x80\x94 标题会落入文本正文中。看到像 Edge 这样的新浏览器无法正确呈现一项已经过了鼎盛时期的技术,这是一个很好的迹象,表明该技术的支持正在下降,并且正在逐渐消失。总结一下;如果您看到“SHTML” 文件扩展名 \xe2\x80\x94即 foo.shtml
\xe2\x80\x94 您现在知道它为什么在那里,并且您现在知道它是什么,它在那里做什么,
在 XHTML 时代,SSI 非常重要。但是,在当代的开发世界中,SSI 最好被用作老师或提醒,一种技术可以非常流行,并且标准化可以由一个以标准化有史以来最具体的 Web 技术而闻名的组织 (W3C) 来维护,但它仍然可以以罗马方式崩溃。SSI 是一个好主意,但是 Web 是用 C++ 编写的语言编写的,而不是实际用 C++ (JavaScript) 编写的,这是有原因的。
\n