Handlebars 5 分入門
Handlebars は Asgard の Template モードで使うテンプレートエンジンです。簡潔な構文で動的なテキストを生成できます。
基本の考え方
Handlebars は波括弧で動的な内容を差し込みます。書き方は 2 つあります。
二重波括弧と三重波括弧の違い
二重波括弧 {{}} — HTML エスケープあり
三重波括弧 {{{}}} — エスケープなし
| 構文 | 用途 | HTML エスケープ | 例 |
|---|---|---|---|
{{}} | 通常のテキスト出力 | ✅ エスケープする | {{content}} → <script> |
{{{}}} | 生の内容の出力 | ❌ エスケープしない | {{{content}}} → <script> |
Asgard での使い分け
**Asgard では、ほとんどの場合三重波括弧 {{{}}} を使ってください。**理由は次のとおりです。
- 意図しない変換を避けられます: 特殊文字が壊れません(
<が<になるなど) - データがそのまま保たれます: 変数の内容が入力どおりに出力されます
出力:
Hello Alice!ご注文番号は ORD20240115001 です
📖 構文をしっかり学ぶ
Handlebars の構文全体は公式ドキュメントにあります
中心となる構文
変数の差し込み
条件分岐
繰り返し
Asgard の組み込みヘルパー
Asgard は 8 つのヘルパーを提供しています。
実用例
基本のメッセージテンプレート
ボタンのテンプレート
{
"type": "BUTTON",
"title": "{{{user.name}}} 様の情報",
"text": "会員情報:\n{{{toJson user}}}",
"buttons": [
{
"label": "履歴を見る",
"action": {
"type": "MESSAGE",
"text": "対話履歴を表示"
}
}
]
}
API 照会の例
Template と Expression の選び方
| 場面 | 使うもの | 理由 |
|---|---|---|
| テキストのテンプレート | Template | 構文が簡潔 |
| 複雑な計算 | Expression | JavaScript の機能をすべて使える |
| 条件分岐 | Template | 組み込みで対応 |
| 数値計算 | Expression | より柔軟 |
早見表
✅ 変数の差し込み: {{{variable}}}
✅ 条件分岐: {{#if condition}}
✅ 繰り返し: {{#each array}}
✅ Asgard のヘルパー: 8 つ
✅ オブジェクトのプロパティ: {{{user.name}}} で入れ子にアクセス
さらに学ぶ
標準の Handlebars 構文と Asgard のヘルパーを組み合わせれば、実用的な動的メッセージテンプレートを作れます。