最近、拡張子が .shtml のサイトを見て、SHTML について知りました。
SHTML の目的は何ですか? また、HTML や DHTML との違いは何ですか?
SHTML は、サーバー サイド インクルード (SSI) を使用してファイルを処理する必要があることを Web サーバーに知らせるファイル拡張子です。
(HTML とは... ご存じのとおり、DHTML は Javascript+HTML+CSS などに対する Microsoft の名前です)。
SSI を使用してページに共通のヘッダーとフッターを含めることができるため、コードを何度も繰り返す必要はありません。1 つのインクルード ファイルを変更すると、すべてのページが一度に更新されます。通常どおり、HTML ページに配置するだけです。
これは標準の XML コメントに埋め込まれており、次のようになります。
<!--#include virtual="top.shtml" -->
これは、PHP インクルードなどの他のメカニズムに大きく取って代わられていますが、一部のホスティング パッケージはまだそれをサポートしており、他には何もサポートしていません。
このウィキペディアの記事で詳細を読むことができます。
Server Side includesを使用した単なる HTMLです。
「2021 年なので、私はこれに答えるつもりです。元の回答は、SSI が非常に一般的であった時代に生きていた人の視点から質問に答えているからです。ただし、現代の Web 開発では、SSI はほとんど時代遅れになっています。」
Server Side Includes
.」「SHTML」、または現在のドキュメントが「サーバーサイドインクルード」を実装する「HTML Doc」(.shtml)
であることを開発者とブラウザに示すために使用される単純なファイル拡張子にすぎません。
SSIを説明する最善の方法は、それらを C 言語と比較することだと思います( C-Style Syntaxと混同しないでください)。C 言語が適切な基準点となる理由は、次の 2 つの理由によるものです。
A. コンピュータ サイエンスの学校に通ったほとんどのソフトウェア/Web 開発者は、C 言語の 1 つに少なくとも「ある程度」精通しています (私にとっては C++ でした)。
B. 構文は、C 言語のステートメントとまったく同じであるため、明らかに元の C 言語から派生したもの#include
です。
「これらは Web ページのプリプロセッサ ディレクティブであり、開発者がコードを DRY に保ち、一貫性のあるヘッダーとフッターを維持するために実装します。これらは、標準の C ディレクティブ構文 (たとえば、、、、など...) を介して実装
#includes
さ#ifdef
れます#define
。#if
C 言語には、ライブラリ、クラス、インターフェイス、テンプレートなどを追加するために使用される構文ステートメントがあり、次のようになります。
#include
#define
#undef
#ifdef
#ifndef
等...
ええと、「簡単に言えば」、同じ構文が「サーバーサイドインクルード」を介してWebページに実装されています。SSI
主な違い: C ディレクティブがプログラムで使用される場合、SSI は Web サイトで使用されます。
キーの類似性 どちらも、プログラム/Web サイトで使用されるコードをインポートします。
<!--
#include ifheader="reference-page" file="header.html" else="header-alt.html"
-->
#if
ます#else
...私はこれを2021 年半ばに書いているので、私が知る限り、SSI がまったく更新されたのは 2012 年が最後だったことに注意することが重要です。それらは W3C によって標準化されています。今日では、はるかに強力なテクノロジーがあるため、それらは本当に必要ありません。1 つ目は、テンプレート エンジン ( Pug
、Handlebars
など...、および 、 などのフレームワーク) ですVue
。React
)。現在、ページに拡張子 SHTML が付いている場合、古いページである可能性が高く、おそらく更新する必要があります。私が見つけてこの質問に答えた理由は、私の教授が SSI を利用する Web サイトを持っていて、Edge がそれを適切にロードしないことに気付いたからです — ヘッダーがテキスト本文にドロップします。エッジのような新しいブラウザーが、全盛期を過ぎたテクノロジーを正しくレンダリングしていないのを見るのは、そのテクノロジーのサポートが低下しており、そのテクノロジーが衰退しつつあることを示す非常に良い兆候です。結論として; 「SHTML」 ファイル拡張子が表示されている場合、つまり foo.shtml
、なぜそこにあるのか、それが何であるか、そこで何をしているのかがわかります。
XHTML の時代には SSI が大流行しました。しかし、現代の Dev-World では、SSI は、技術が非常に普及する可能性があり、これまでに作成された最も具体的な Web 技術を標準化することで知られるグループ (W3C) によって標準化が維持される可能性があることを教える、または思い出させるものとして最もよく利用されています。 、それでもローマ風に崩壊する可能性があります。SSI は素晴らしいアイデアでしたが、実際には C++ (JavaScript) ではなく、C++ で記述された言語で Web が記述されているのには理由があります。