| 原作者 | ジャスティン・ハイルマン、ブルーノ・スーティク、クリス・ワンストラス、リカルド・メンデス、ブルーノ・ミシェル |
|---|---|
| 初回リリース | 2009年 |
| 安定版リリース | 4.2.0 / 2021年3月28日 |
| リポジトリ |
|
| タイプ | Webテンプレートシステム |
| ライセンス | マサチューセッツ工科大学 |
| Webサイト | マスタッシュ |
MustacheはWeb テンプレート システムです。条件文やfor ループなどの明示的な制御フローステートメントがないため、ロジックのないシステムとして説明されています。ただし、ループと条件評価は、セクション タグ処理リストと匿名関数(ラムダ)を使用して実現できます。横向きの口ひげに似た中括弧,を多用しているため、「Mustache」と名付けられています。Mustache は主にモバイル アプリケーションと Web アプリケーションで使用されます。[1] [2]ifelse { }
実装は、ActionScript、C++、Clojure、CoffeeScript、ColdFusion、Common Lisp、Crystal、D、Dart、Delphi、Elixir、Erlang、Fantom、Go、Haskell、Io、Java、JavaScript、Julia、Lua、.NET、Objective-C、OCaml、Perl、PHP、Pharo、Python、R、Racket、Raku、Ruby、Rust、Scala、Smalltalk、Swift、Tcl、CFEngine、XQueryで利用できます。
歴史と原則
Mustache-1はctemplateとet [3]に触発され、 2009年末にGitHubディストリビューションとして始まりました。テンプレートエンジンの最初のバージョンはRubyで実装され、YAMLテンプレートテキストを実行していました。(保持された)主な原則は次のとおりです。
- ロジックレス: 明示的な制御フロー ステートメントはなく、すべての制御はデータによって駆動されます。
- 強力な関心の分離: ロジックとプレゼンテーション: テンプレートにアプリケーション ロジックを埋め込むことは不可能です。
入力データはクラスにすることができるので、入力データはモデル・ビュー・コントローラ(MVC)ビューとして特徴付けることができます。Mustacheテンプレートは、 (入力データの)ビュー内のメソッドを参照する以外は何もしません。[3]すべてのロジック、決定、およびコードはこのビューに含まれており、すべてのマークアップ(例:出力XML )はテンプレートに含まれています。モデル・ビュー・プレゼンター(MVP)コンテキストでは、入力データはMVPプレゼンターからのものであり、MustacheテンプレートはMVPビューです。
例
データ
JSONデータが Mustache テンプレートに入力され、出力が生成されます。次にデータの例を示します。
{
"name" : "World" , "より大きい" : ">" }
変数
以下のような単純な Mustache テンプレートを上記のデータと組み合わせると、次のように出力されますHello World。
Mustache HTML はデフォルトでデータを エスケープします。たとえば、以下は としてレンダリングされます2 > 1。
エスケープをオフにするには、 を使用します&。以下は としてレンダリングされます2 > 1。
if文とforeachループ
以下はセクション タグ付きのテンプレートです。 がブールx値の場合、セクション タグはif条件のように動作します。 が配列の場合、 foreach ループのように動作します。
x
特殊変数は、{{.}}配列をループするときに現在の項目を参照するか、条件でチェックされる項目を参照します。
他のテンプレートを含める
シンボルを使用して、Mustache テンプレートに、その中に別の Mustache テンプレートを読み込むように指示できます>。
コメント
コメントは感嘆符を使用して示されます。
技術的な詳細
構文の強調表示はAtom、Coda、Emacs、[4] TextMate、Vim、Visual Studio Codeで利用できます。[5]
Mustache テンプレートのサポートは、多くのWeb アプリケーション フレームワーク(例: CakePHP ) [引用が必要]に組み込まれています。JavaScript のサポートには、 jQuery、Dojo、YUIなどの多くのJavaScript ライブラリとAjax フレームワークを使用したクライアント側プログラミングと、Node.jsとCommonJS を使用したサーバー側 JavaScript の両方が含まれます。
仕様と実装
利用可能なMustache エンジン実装は多数あり、それらはすべて共通の形式仕様(外部リンクを参照) を満たしており、最終ユーザーにとっては共通の構文になります。
2011年3月時点での最新のSPEC_VERSIONは1.1.2であった。[6]
v1.X アーキテクチャのすべてのMustache エンジンには、レンダリングメソッド、Mustache_Compilerクラス、およびParserクラスがあります。[引用が必要]
バリエーションと派生
Mustache は、元のシンプルさから派生して特定の機能や用途を追加した数多くの JavaScript テンプレート ライブラリに影響を与えました。[引用が必要]
ハンドルバー
Handlebars.js [7]は次のように説明されています。
Handlebars.js は、Chris Wanstrath によって作成された Mustache テンプレート言語の拡張機能です。Handlebars.js と Mustache はどちらもロジックのないテンプレート言語であり、ビューとコードを分離しておくのが当然です。[8]
Handlebars は、ブロック式(Mustache のセクションに類似) 内で、ヘルパーによってそのブロックの明示的なユーザー記述コードを通じてカスタム関数が許可される という点で、以前のバージョンとは異なります。
参照
参考文献
- ^ アヴォラ、G.ラーシュ、J. (2012)。モバイル Web 開発を破壊する。ISBN 9781118348123。
- ^ Cady, J. (2011). Web 開発テンプレートに適用された関数型プログラミング: MS プロジェクト レポート(PDF) (レポート).
- ^ ab “Mustache” 。GitHub。2022年4月19日。
- ^ 「ホーム」. web-mode.org .
- ^ 「Mustache - Visual Studio Marketplace」。Visualstudio.com。Microsoft。2019年 8 月 18 日。
- ^ 「変更点」。Mustache。GitHub。2011年3月20日。
- ^ Katz, Yehuda (2011–2019). 「Handlebars: ステロイドによる最小限のテンプレート化」. Handlebarsjs.com。
- ^ wykatz、NPM。「html+handlebars NPM」。html+handlebars NPM パッケージの詳細。Node Package Manager。2016年12 月 20 日閲覧。
外部リンク
- 公式サイト
- GitHubの Mustache
- 口ひげ構文
- 口ひげ仕様
