133

最近、拡張子が .shtml のサイトを見て、SHTML について知りました。

SHTML の目的は何ですか? また、HTML や DHTML との違いは何ですか?

4

3 に答える 3

180

SHTML は、サーバー サイド インクルード (SSI) を使用してファイルを処理する必要があることを Web サーバーに知らせるファイル拡張子です。

(HTML とは... ご存じのとおり、DHTML は Javascript+HTML+CSS などに対する Microsoft の名前です)。

SSI を使用してページに共通のヘッダーとフッターを含めることができるため、コードを何度も繰り返す必要はありません。1 つのインクルード ファイルを変更すると、すべてのページが一度に更新されます。通常どおり、HTML ページに配置するだけです。

これは標準の XML コメントに埋め込まれており、次のようになります。

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

これは、PHP インクルードなどの他のメカニズムに大きく取って代わられていますが、一部のホスティング パッケージはまだそれをサポートしており、他には何もサポートしていません。

このウィキペディアの記事で詳細を読むことができます。

于 2009-02-06T09:09:52.400 に答える
24

Server Side includesを使用した単なる HTMLです。

于 2009-02-06T09:07:20.457 に答える
5

「2021 年なので、私はこれに答えるつもりです。元の回答は、SSI が非常に一般的であった時代に生きていた人の視点から質問に答えているからです。ただし、現代の Web 開発では、SSI はほとんど時代遅れになっています。」


「SSI は次の略称です: Server Side Includes.」

「SHTML」、または現在のドキュメントが「サーバーサイドインクルード」を実装する「HTML Doc」(.shtml)であることを開発者とブラウザに示すために使用される単純なファイル拡張子にすぎません。

SSIを説明する最善の方法は、それらを C 言語と比較することだと思います( C-Style Syntaxと混同しないでください)。C 言語が適切な基準点となる理由は、次の 2 つの理由によるものです。

  • A. コンピュータ サイエンスの学校に通ったほとんどのソフトウェア/Web 開発者は、C 言語の 1 つに少なくとも「ある程度」精通しています (私にとっては C++ でした)。

  • B. 構文は、C 言語のステートメントとまったく同じであるため、明らかに元の C 言語から派生したもの#includeです。



したがって、C 言語に精通している場合は、私が何を説明しているかをすでによく理解していることでしょう。

そして、私が続けると、私は言う:

「これらは Web ページのプリプロセッサ ディレクティブであり、開発者がコードを DRY に保ち、一貫性のあるヘッダーとフッターを維持するために実装します。これらは、標準の C ディレクティブ構文 (たとえば、、、、など...) を介して実装#includes#ifdefれます#define#if

そうすれば、おそらくそれらが何であるかを正確に知ることができます。




これまでに C 言語を学習したことがない場合は、次の抜粋をご覧ください。

C 言語には、ライブラリ、クラス、インターフェイス、テンプレートなどを追加するために使用される構文ステートメントがあり、次のようになります。

  • #include

  • #define

  • #undef

  • #ifdef

  • #ifndef

等...


ええと、「簡単に言えば」、同じ構文が「サーバーサイドインクルード」を介してWebページに実装されてますSSI


  • 主な違い: C ディレクティブがプログラムで使用される場合、SSI は Web サイトで使用されます。

  • キーの類似性 どちらも、プログラム/Web サイトで使用されるコードをインポートします。



SSI は次のようになります。

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

  • SSIには、、、などもあり#ifます#else...

SSI がどのように見えるか、およびその構文を決定したので、現代の世界に関連してそれらが何であるかを説明します。

私はこれを2021 年半ばに書いているので、私が知る限り、SSI がまったく更新されたのは 2012 年が最後だったことに注意することが重要です。それらは W3C によって標準化されています。今日では、はるかに強力なテクノロジーがあるため、それらは本当に必要ありません。1 つ目は、テンプレート エンジン ( PugHandlebarsなど...、および 、 などのフレームワーク) ですVueReact)。現在、ページに拡張子 SHTML が付いている場合、古いページである可能性が高く、おそらく更新する必要があります。私が見つけてこの質問に答えた理由は、私の教授が SSI を利用する Web サイトを持っていて、Edge がそれを適切にロードしないことに気付いたからです — ヘッダーがテキスト本文にドロップします。エッジのような新しいブラウザーが、全盛期を過ぎたテクノロジーを正しくレンダリングしていないのを見るのは、そのテクノロジーのサポートが低下しており、そのテクノロジーが衰退しつつあることを示す非常に良い兆候です。結論として; 「SHTML」 ファイル拡張子が表示されている場合、つまり foo.shtml、なぜそこにあるのか、それが何であるか、そこで何をしているのかがわかります。

最後のメモ:

XHTML の時代には SSI が大流行しました。しかし、現代の Dev-World では、SSI は、技術が非常に普及する可能性があり、これまでに作成された最も具体的な Web 技術を標準化することで知られるグループ (W3C) によって標準化が維持される可能性があることを教える、または思い出させるものとして最もよく利用されています。 、それでもローマ風に崩壊する可能性があります。SSI は素晴らしいアイデアでしたが、実際には C++ (JavaScript) ではなく、C++ で記述された言語で Web が記述されているのには理由があります。

于 2021-09-07T22:38:34.843 に答える