Handlebars 5分鐘快速入門
Handlebars 是 Asgard Template 模式中使用的模板引擎,讓您能以簡潔的語法產生動態文字內容。
基本概念
Handlebars 使用大括號語法插入動態內容,有兩種不同的使用方式:
雙大括號 vs 三大括號的差異
雙大括號 {{}} - 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 內建函數,您可以建 立強大的動態訊息模板。