YAML 基本語法規則
學習 YAML 的第一步是了解它的格式規範。YAML 是一門對格式非常嚴格的語言(尤其是縮排),一旦格式錯誤,程式在解析時就會報錯。
本章將帶你掌握 YAML 最核心的語法規則。
縮排與階層 (Indentation)
YAML 使用縮排來決定資料的階層關係,這點與 Python 非常相似。
- 必須使用空格:YAML 規範中禁止使用 Tab 鍵進行縮排,只能使用空格 (Space)。
- 空格數量一致:雖然沒有規定一定要縮排幾個空格(通常是 2 個或 4 個),但同一個階層的成員必須對齊。
# 正確的縮排 (使用 2 個空格)
user:
name: "Mike"
age: 25
# 錯誤範例:同階層未對齊
database:
host: "localhost"
port: 3306 # 這裡多了一個縮排,會導致結構判讀錯誤
大部分的現代編輯器(如 VS Code)都會自動將 Tab 鍵轉換為空格,但在撰寫 YAML 時仍需特別留意。
大小寫敏感 (Case Sensitivity)
YAML 對大小寫是極度敏感的。
# 這代表兩個不同的鍵值
status: "active"
Status: "pending"
在撰寫設定檔時,務必確認你的鍵名 (Key) 與預期使用的軟體規範完全一致。
鍵值對 (Key-Value Pairs)
YAML 的基礎單元是「鍵值對」,寫法非常直覺:使用一個冒號 : 加上一個空格。
# 格式:鍵名: 值
website: "www.fooish.com"
pages: 100
重要! 冒號後面一定要有一個空格,否則 YAML 解析器會將其視為字串的一部分而非鍵值對。
註解 (Comments)
在 YAML 中,所有以 # 開頭的內容都會被視為註解。你可以將註解放在獨立的一行,或是放在程式碼的後方。
# 這是獨立一行的註解
version: "3.9" # 這是行尾的註解
單一檔案中包含多個文件
有時候我們需要在同一個 .yaml 檔案中定義多個獨立的文件(這在 Kubernetes 設定中非常常見)。
- 使用
---(三個減號) 代表一個文件的開始。 - 使用
...(三個點) 代表一個文件的結束(非必填)。
---
# 文件 1
app: "web-server"
---
# 文件 2
app: "database-server"
...
總結基本規則
| 規則 | 說明 |
|---|---|
| 縮排 | 必須使用空格,嚴禁使用 Tab。 |
| 冒號 | 鍵與值之間使用 : (冒號後要有空格)。 |
| 大小寫 | Name 與 name 是不同的。 |
| 註解 | 使用 # 字號。 |
| 文件分割 | 使用 --- 來區隔同檔案內的多個文件。 |