【てんぷれーとえんじん】
テンプレートエンジン とは?
最終更新:
💡 「穴埋め問題」のようにデータをはめ込むエンジン
雛形(テンプレート)にデータを埋め込んで、HTMLやメール本文などの最終的な出力を動的に生成する仕組み。同じ構造の文書を効率よく量産できる。
📌 このページのポイント
何をするものなの?
商品名だけが違うページを作るとき、共通の雛形と商品データを用意して出力を生成するよ。「こんにちは、{{name}}さん!」のnameへ値を渡すイメージ。これはJinjaなどの構文例で、どのエンジンでも同じ書き方というわけではないんだ。
どんな種類があるの?
PythonのJinja、JavaScriptのEJSなどがあるよ。JinjaはHTML以外のテキストも生成でき、EJSはJavaScriptを使ってHTMLを作る。変数だけでなく条件分岐や繰り返し、共通部品も扱える。ReactのJSXはJavaScriptの構文拡張なので、単なる文字列の穴埋め機能と同じものとして扱わないほうがいいね。
安全に使うには?
ユーザーの値は雛形のコードにせず、データとして渡そう。HTMLへ出すときは、本文・属性・JavaScriptなどの出力先に合うエスケープが必要だよ。自動処理はエンジンや設定により違い、EJSの<%=はエスケープあり、<%-はなし。ユーザーが雛形そのものを書く場合の危険は、値のエスケープだけでは防げないんだ。
Reactを使っていても出番はある?
自作するときの注意は?
まとめ:ざっくりこれだけ覚えればOK!
「テンプレートエンジン」って出てきたら「雛形にデータを埋め込んで動的にページや文書を生成する仕組みだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「template engine」 = 雛形を処理するエンジン
💬 templateは「型紙・雛形」という意味。同じ型紙を使い回してデータだけ入れ替えるイメージだよ