Webテンプレートシステム

サーバー側Web テンプレート システムの基本プロセス: コンテンツ (データベースから) と「プレゼンテーション仕様」( Web テンプレート内) が (テンプレート エンジンを通じて) 組み合わされ、Web ドキュメントが大量生産されます。

WebパブリッシングにおけるWebテンプレートシステムにより、Webデザイナーや開発者はWebテンプレートを用いて、検索結果などのカスタムWebページを自動生成できます。これにより、静的なWebページ要素を再利用しながら、 Webリクエストパラメータに基づいて動的な要素を定義できます。Webテンプレートは静的コンテンツをサポートし、基本的な構造と外観を提供します。開発者は、コンテンツ管理システムWebアプリケーションフレームワークHTMLエディタからテンプレートを実装できます

概要

Webテンプレート システムは、次の要素で構成されます。

テンプレートとコンテンツリソースはテンプレートエンジンによって処理・結合され、それぞれが類似した視覚的フォーマットを持つウェブドキュメントを大量に生成します。この記事では、ウェブドキュメントとは、HTTPHTTPS、またはその他のインターネットプロトコルを介してウェブ上で送信される様々な出力形式を指します。

テンプレートエンジン

テンプレート エンジンのすべての基本要素と処理フローを示す図。
テンプレートプロセッサ(テンプレートエンジンまたはテンプレートパーサーとも呼ばれる)は、テンプレートとデータ(データモデルで定義)を組み合わせて結果のドキュメントまたはプログラムを生成するように設計されたソフトウェアです。[2] [3] [4]テンプレートが記述される言語は、テンプレート言語またはテンプレート言語として知られています。この記事では、結果ドキュメントとは、ドキュメントWebページ、またはソースコードソースコード生成)など、全体または断片を含むあらゆる種類のフォーマットされた出力を指します。テンプレートエンジンは通常、Webテンプレートシステムまたはアプリケーションフレームワークの一部として含まれておりプリプロセッサまたはフィルターとしても使用できます。

モデルは通常リレーショナルデータベースに保持されるため、MVCアーキテクチャの残りのコンポーネントはコントロールとビューです。最も単純なシステムでは、これら2つは分離されていません。しかし、関心の分離の原則を適用することで、関係を完全に分離することができます。

たとえば、ビュー テンプレートは次のようになります。

<!DOCTYPE html> < html  xmlns = "http://www.w3.org/1999/xhtml" >  < head >< title >サイト</ title ></ head >  < body >< h1  data-xp = "title" > <!-- プレースホルダー --> </ h1 ></ body > </ html >

次に、コントロール テンプレートはビューを読み込み、XPathアドレス指定[オリジナル調査? ]を使用してデータベースからコンポーネントを挿入します。次に例を示します。

<?php $doc  =  new  DOMDocument ; $doc -> preserveWhiteSpace  =  false ; $doc -> Load ( 'view.html' ); $titlenode  =  $doc -> createTextNode ( "Like this" ); $xpath  =  new  DOMXPath ( $doc ); $xpath -> registerNamespace ( "h" ,  "http://www.w3.org/1999/xhtml" );  $query  =  "//h:*[@data-xp='title']/comment()" ; $entries  =  $xpath -> query ( $query ); foreach  ( $entries  as  $entry )  {  $entry -> parentNode -> replaceChild ( $titlenode ,  $entry ); } echo  $doc -> saveXML (); ?>

テンプレートシステムの種類

ウェブブラウザとウェブサーバーはクライアントサーバーアーキテクチャです。ウェブサイトではパフォーマンス向上のためにウェブキャッシュが使用されることもよくあります。テンプレートシステムは、プレースホルダーを実際のコンテンツに置き換えてページを組み立てるタイミングに基づいて5つのタイプに分類されます。

  • サーバー側 – 実行時の置換はWebサーバー上で行われる
  • クライアント側 – 実行時の置換はウェブブラウザで行われる
  • エッジサイド – 実行時の置換は、Webサーバーとブラウザ間のプロキシで行われます。
  • 外部サーバー – 静的Webページはオフラインで生成され、Webサーバーにアップロードされます。実行時の置換はありません。
  • 分散型 – 実行時の置換は複数のサーバーで行われる

テンプレート言語には次のようなものがあります:

  • 埋め込み型またはイベント駆動型。
  • シンプル、反復可能、プログラム可能、または複雑。
  • コンソーシアムによって定義される場合もあれば、非公開で定義される場合もあり、あるいはオープン実装によって事実上定義される場合もあります。所有権は仕様の安定性と信頼性に影響を与えます。しかし、ほとんどの法域では言語仕様は著作権の対象とならないため、制御権が絶対的なものになることはほとんどありません。

テンプレート エンジンのソース コードは、独自のものでもオープン ソースのものでもかまいません

多くのテンプレートシステムは、より大きなプログラミングプラットフォームまたはフレームワークの構成要素です。これらは「プラットフォームのテンプレートシステム」と呼ばれます。一部のテンプレートシステムでは、別のテンプレート言語またはエンジンを代替できるオプションが用意されています。[要出典]

言語サポート

PerlRubyCJavaなどのプログラミング言語は、ネイティブ、またはアドオンライブラリやモジュールを通じてテンプレート処理をサポートしています。JavaServer Pages(JSP)、PHPActive Server Pages ( VBScriptJScript 、またはその他の言語を使用したASP )は、それ自体がWebテンプレートエンジンの例です。これらの技術は、通常、サーバーサイドのテンプレートシステムで使用されますが、「エッジサイド」プロキシや静的ページ生成にも適応できます。

静的サイトジェネレーター

静的サイトジェネレーターは、 MarkdownAsciidocなどのフラットテキスト入力ファイルを使用して静的なウェブページを生成するエンジンです。例としては、 Jekyll(Liquid、Ruby)、HugoGoテンプレート)、Pelican(Jinja2Python)などが挙げられます。

静的HTMLエディター

外部サーバーテンプレートのシステムアーキテクチャ。

HTMLエディタは、静的なウェブページを作成するためにウェブテンプレートシステムを使用することが多い。これらは、既製のウェブデザインと見なすことができ、迅速な導入のために「クッキーカッター」のようなウェブサイトを大量生産するために使用される。また、 CSSスタイルの代わりにテーマが含まれていることも一般的である。一般的に、テンプレート言語はエディタソフトウェアでのみ使用される。[5]

FrontPageDreamweaverはかつて、テンプレートサブシステムを備えた最も人気のあるエディタでした。Flashウェブテンプレートは、Macromedia Flashを使用して視覚的にインタラクティブなサイトを作成します。

多くのサーバーサイドテンプレートシステムには、出力ページをサーバー上に公開するオプションがあります。この場合、公開されるページは静的です。これはVignetteのようなコンテンツ管理システムでは一般的ですが、サーバー外への生成とはみなされません。ほとんどの場合、この「公開オプション」はテンプレートシステムの動作を妨げることはなく、Wgetなどの外部ソフトウェアで作成できます。

サーバー側システム

サーバー側テンプレートシステム

人々は、テンプレートから生成されたサーバーサイドの動的ページを、このタスク向けに適応された既存のソフトウェアを使って使い始めました。この初期のソフトウェアは、Web用に適応され、CGI上で実行されるプリプロセッサマクロ言語でした。次に、シンプルながらも重要な技術として、 SSIに始まる拡張モジュール上での直接実行が登場しました

多くのテンプレート システムは、通常、サーバー側のテンプレート システムとして使用されます

システムラベル/名前プラットフォーム/フレームワーク注記
ブレードPHPパブリック。Laravelの一部
チーターテンプレートパイソンパブリック。埋め込まれた複雑な言語
ジャンゴパイソン「Django テンプレート言語」を使用します。
EJS(埋め込みJavaScript)JavaScriptパブリック。埋め込まれた複雑な言語
フリーマーカージャワ公共。
フェイスレットジャカルタEE公開。ジャカルタ・フェイシズの一部
ゲンシパイソン公共
ハムルルビーまたはその他公共。
村落ジャワ公共。
ジンジャ2パイソンパブリック。埋め込まれた複雑な言語
子供パイソン
ラッソラッソソフトLLC独自のインタープリタ型 プログラミング言語サーバー
口ひげActionScriptC++ClojureCoffeeScriptColdFusionDErlangFantomGoJavaサーバーサイドJavaScriptLua.NETObjective-C、ooc、[6] PerlPHPPythonRubyScalaTcl公共。
基本的なサーバーサイドインクルード(SSI)基本指令は「標準」を定めます。埋め込まれたシンプルな言語、ディレクティブを除外する場合exec
スマーティPHPパブリック。埋め込まれた複雑な言語
テンプレートツールキットパールパブリック。埋め込まれた複雑な言語
テンプレート属性言語(TAL)ZopePythonJavaPerlPHPXSLTパブリック; 別名Zope ページ テンプレート (ZPT) ; TAL 式構文(TALES)、マクロ展開 TAL (METAL)も参照
タイルジャワパブリック。さまざまなフレームワーク (サーブレット、ポートレット、Struts、Spring) の複数のテンプレート言語 (JSP、Velocity、Freemarker、Mustache) をサポートします。
タイムリーフジャワ公共。
トップサイトパイソン公開。「2008年2月20日現在、このプロジェクトはアクティブな開発を終了しています。」[7]
小枝PHP
PHPライブラリPHPライブラリパブリック。埋め込み反復可能言語
ウェブマクロジャワパブリック。埋め込み反復可能言語
WebオブジェクトジャワWebObjects Builder をエンジンとして使用します。
速度ジャワパブリック。VTL (Velocity テンプレート言語) を使用します。
ビネット独自仕様。商用ソリューション。複雑な言語が組み込まれています
XSLT(標準言語)XSLTパーサーを備えたもの標準。イベント駆動型のプログラミング言語
XQuery(標準言語)XQueryパーサーを備えたもの標準。組み込みプログラミング言語

技術的には、多くの「サーバーサイドインクルードスクリプト言語」で使用されている、HTML(またはXMLなど)内にプログラミング言語を埋め込む手法もテンプレートです。これらはすべて、埋め込み型複合言語です。

システムラベル/名前注記
アクティブ サーバー ページ(ASP)独自仕様(Microsoftプラットフォーム)。ASPのVBScript、Javascript、PerlScriptなどの拡張機能も参照してください。
eRubyパブリック(Ruby)。
ColdFusion マークアップ言語(CFM)パブリック ( LuceeRailo、OpenBD)。プロプライエタリ ( Adobe ColdFusion )。
ジャカルタ サーバー ページ(JSP)パブリック、Jakarta EE
アクティブPerl公共。
PHP公共。
オープンACSパブリック ( Tcl )。

サーバー側テンプレートエンジンとして使用されるプリプロセッサもあります。例:

プリプロセッサ注記
Cプリプロセッサパブリック。埋め込み反復可能言語
M4パブリック。埋め込まれた複雑な言語

エッジサイドシステム

エッジサイドのテンプレートおよびインクルードシステム。「エッジサイド」とは、クライアント(ブラウザ)と元のサーバーの間に存在するウェブサーバーを指します。これらはしばしば「リバースプロキシ」サーバーと呼ばれます。これらのサーバーは一般的に、画像やページフラグメントなどのコンテンツをキャッシュし、ブラウザに効率的に配信することで、元のサーバーの負荷とトラフィックを軽減する役割を担っています。

Basic Edge Side Include (ESI) は SSI に似た言語です。ESI はコンテンツ配信ネットワーク向けに実装されています。ESI テンプレート言語は、JavaScript と Ajax を使用するか、ブラウザの「プラグイン」を介して Web ブラウザに実装することもできます。

クライアント側システム

クライアント側および分散型(非中央集権型) テンプレート システム。

多くのウェブブラウザは、XMLデータにXSLTスタイルシートを適用してXHTMLドキュメントに変換することで、ブラウザ自体にテンプレート機能を提供します。他のシステムでは、 JavaScriptやその他のクライアントサイドスクリプト言語
を使用してブラウザにテンプレート機能を実装しています。

  • 口ひげ
  • リスのような
  • ハンドルバー

分散システム

最もシンプルな形式はトランスクルージョン(HTMLフレーム)です。それ以外の場合には、動的なWebページが必要になります。

例:

参照

概念:     規格:
  • UIML(ユーザーインターフェースマークアップ言語)
  • XSLT(拡張スタイルシート言語変換)
     ソフトウェア:

参考文献

  1. ^ “テンプレートエンジン”. phpwact.org wiki. 2012年12月4日時点のオリジナルよりアーカイブ。 2013年1月7日閲覧
  2. ^ Niemeyer, Patrick (2002). 『Learning Java』 セバストーポル: O'Reilly. ISBN 0-596-00285-8
  3. ^ マノレスク、ドラゴス (2006). 『プログラム設計のパターン言語 5』参考文献: Addison-Wesley Professional. ISBN 0-321-32194-4
  4. ^ Fowler, Martin (2003). 『エンタープライズ・アプリケーション・アーキテクチャのパターン』ボストン: Addison-Wesley. ISBN 0-321-12742-0
  5. ^ MacDonald, Matthew (2015). ウェブサイト作成:失われたマニュアル。第8章 > 同じコンテンツを複数のページに配置する > Webテンプレート > メモ: O'Reilly Media, Inc. ISBN 9781491936177. 2016年1月19日閲覧{{cite book}}: CS1 maint: location (link)
  6. ^ “{{mustache}}” . 2013年10月15日閲覧
  7. ^ jodyburns. 「Topsite Templating System」 . 2013年10月15日閲覧

9. 無料の電子商取引 Web サイト テーマ MG Technologies のブログおよび Web サイト テーマの情報ポータル。

  • 2009 年の JavaScript テンプレート ライブラリの比較
  • テンプレートエンジンにおける厳密なモデル・ビュー分離の強制
  • テンプレートベースのWebアプリケーションで効果的なモデル・ビュー分離を実現するための二重モデルアプローチ
  • PHPテンプレートエンジンとグラフの比較
  • いくつかの Python テンプレート エンジンの比較/ベンチマークとテンプレート エンジンに関する一般的な考察
  • web-mode.elは、Webテンプレートを編集するためのemacsメジャーです。
Retrieved from "https://en.wikipedia.org/w/index.php?title=Web_template_system&oldid=1308253822"