YAML的發展歷史
YAML(YAML Ain’t Markup Language)是一種人類易讀的資料序列化格式,最初於2001年由Clark Evans、Ingy döt Net和Oren Ben-Kiki共同開發。YAML的名稱原本是「Yet Another Markup Language」,但後來改為「YAML Ain’t Markup Language」,強調它並非標記語言,而是資料序列化格式。
YAML的設計初衷是創造一種易於人類閱讀且能表達常見資料結構的格式,同時保持對程式語言的相容性。開發者們希望創造一種比XML更簡潔、比JSON更易讀的格式。
YAML的發展里程碑:
- 2001年:YAML 0.1版本發布
- 2004年:YAML 1.0規格確立
- 2009年:YAML 1.2版本發布,解決了與JSON相容性的問題
- 2021年:YAML 1.2.2版本發布,修正了一些語法問題並改進了規格
YAML的現代應用與使用狀況
現在,YAML已成為軟體開發和系統配置的重要工具,廣泛應用於:
-
容器化技術與雲端服務:
- Docker Compose檔案
- Kubernetes配置檔案
- AWS CloudFormation、Azure Resource Manager等雲服務配置
-
CI/CD與自動化:
- GitHub Actions工作流程
- GitLab CI/CD配置
- Jenkins配置
-
配置管理:
- Ansible劇本
- Puppet和Chef配置
- Spring Boot應用程式配置
-
靜態網站生成器:
- Jekyll、Hugo的前置資料
- 部落格和文件網站的元數據
-
開發工具配置:
- 程式編輯器設定(如VSCode)
- 程式碼檢查工具(如ESLint)
YAML被廣泛採用的原因包括其人類可讀性、支援複雜資料結構、易於整合,以及各種程式語言的廣泛支援。
YAML基礎教學
基本語法
1. 縮排與結構
YAML使用縮排(通常是2個空格)來表示資料階層:
person:
name: 張小明
age: 30
skills:
- Python
- YAML
- Docker
2. 基本資料型別
字串:
name: 張小明 # 普通字串
description: '含有特殊字元: &' # 引號字串
long_text: | # 保留換行的多行文字
這是第一行
這是第二行
folded_text: > # 摺疊成單行的多行文字
這些文字會被
摺疊成一行
數字:
age: 30 # 整數
price: 19.99 # 浮點數
scientific: 1.2e+3 # 科學記號
布林值:
is_active: true
has_license: false
空值:
middle_name: null # 或者直接用 ~
3. 集合型別
清單(Lists):
fruits:
- 蘋果
- 香蕉
- 橘子
# 或者使用行內語法
colors: [紅, 綠, 藍]
物件/映射(Maps):
person:
name: 張小明
age: 30
# 或者使用行內語法
person: {name: 張小明, age: 30}
4. 錨點與別名(重複使用資料)
defaults: &defaults
timeout: 30
retry: 3
development:
<<: *defaults # 插入defaults的所有欄位
host: dev.example.com
production:
<<: *defaults
host: prod.example.com
timeout: 60 # 覆蓋預設值
實際應用範例
Docker Compose配置
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
簡單的個人配置檔
person:
name: 張小明
contact:
email: ming@example.com
phone: "0912-345-678"
education:
- institution: 台灣大學
degree: 資訊工程學士
year: 2015
- institution: 交通大學
degree: 資訊科學碩士
year: 2018
interests:
- 程式設計
- 攝影
- 旅行
is_active: true
使用YAML的提示
- 注意縮排 – 使用空格(通常是2個)而非tab鍵
- 小心字串中的特殊字元,必要時使用引號
- 注意布林值的寫法:true、false、yes、no、on、off
- 使用驗證工具檢查YAML的有效性
- 避免過度巢狀化,以保持可讀性
透過本篇介紹,希望能幫助你理解YAML的基本概念和用法。隨著容器化、配置即代碼等趨勢,YAML在現代軟體開發中的重要性只會越來越高。掌握YAML不僅有助於配置各種系統,也是現代開發者的必備技能之一。
在〈YAML:人類易讀的資料序列化格式〉中有 1 則留言