在這裏插入圖片描述

YAML 語法詳解

一、YAML 簡介

YAML(YAML Ain't Markup Language)是一種人類可讀的數據序列化格式,常用於配置文件和數據交換。

二、基本語法規則

1. 大小寫敏感

name: John  # 正確
Name: John  # 被視為不同的鍵

2. 使用縮進表示層級關係

  • 使用空格縮進(通常2個或4個空格)
  • 禁止使用製表符(Tab)
person:
  name: John
  address:
    city: Beijing
    zip: 100000

3. 註釋

使用 # 開頭

# 這是註釋
name: John  # 行內註釋

三、數據結構

1. 標量(Scalars)

基本數據類型:

string: "Hello World"  # 字符串
string2: Hello World   # 引號可選
integer: 123          # 整數
float: 3.14           # 浮點數
boolean: true         # 布爾值
null: null            # 空值
date: 2024-01-15      # 日期

2. 字符串特殊表示

# 多行字符串
description: |
  這是第一行
  這是第二行
  保留換行符

# 摺疊多行字符串
summary: >
  這是第一行
  這是第二行
  轉換為空格

# 保留換行和縮進
text: |2
   第一行
   第二行  # 保留2空格縮進

3. 序列(列表/數組)

使用短橫線 - 表示:

fruits:
  - Apple
  - Banana
  - Orange

# 行內表示
colors: [red, green, blue]

4. 映射(對象/字典)

使用鍵值對:

person:
  name: John Doe
  age: 30
  married: false

# 行內表示
person: {name: John, age: 30}

四、複雜結構示例

1. 嵌套結構

# 對象中包含數組
company:
  name: Tech Corp
  employees:
    - name: Alice
      department: Engineering
    - name: Bob
      department: Sales

# 數組中包含對象
servers:
  - host: server1
    port: 8080
  - host: server2
    port: 8081

2. *錨點和別名(& 和

用於複用數據:

defaults: &default_settings
  host: localhost
  port: 3306
  timeout: 30

development:
  <<: *default_settings
  database: dev_db

production:
  <<: *default_settings
  host: prod-server
  database: prod_db

五、高級特性

1. 多文檔支持

--- 分隔文檔,... 結束文檔:

---
# 文檔1
name: Document 1
---
# 文檔2
name: Document 2
...

2. 數據類型標識

# 強制類型轉換
string_int: !!str 123      # 轉為字符串 "123"
int_string: !!int "456"    # 轉為整數 456
binary: !!binary |         # 二進制數據
  SGVsbG8gV29ybGQ=

3. 複雜鍵

使用 ? 表示複雜鍵:

# 鍵本身是複雜結構
? - name
  - age
: value

# 或使用引號
"complex.key": value

六、實際應用示例

1. 配置文件

# application.yaml
server:
  port: 8080
  ssl:
    enabled: true
    key-path: /path/to/key.pem

database:
  connection:
    host: localhost
    port: 5432
    username: ${DB_USER}
    password: ${DB_PASS}

logging:
  level:
    root: INFO
    com.example: DEBUG

2. Docker Compose

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
  
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: secret

七、最佳實踐

  1. 一致性:統一使用2或4個空格縮進
  2. 可讀性:複雜結構適當換行
  3. 驗證:使用YAML驗證工具檢查語法
  4. 避免複雜:避免過度複雜的嵌套結構
  5. 敏感信息:不要在YAML中直接存儲密碼等敏感信息

八、常見工具

  • 驗證工具:yamllint、在線驗證器
  • 解析庫
    • Python:PyYAML、ruamel.yaml
    • JavaScript:js-yaml
    • Java:SnakeYAML
    • Go:go-yaml

九、注意事項

  1. YAML 1.2 不再支持一些1.1的特性(如布爾值簡寫)
  2. 某些實現可能不支持所有高級特性
  3. 注意特殊字符的轉義

YAML以其簡潔的語法和良好的可讀性,成為現代軟件開發中廣泛使用的配置格式,特別是在容器編排、CI/CD配置和應用程序設置中。


結束語 Flutter是一個由Google開發的開源UI工具包,它可以讓您在不同平台上創建高質量、美觀的應用程序,而無需編寫大量平台特定的代碼。我將學習和深入研究Flutter的方方面面。從基礎知識到高級技巧,從UI設計到性能優化,歡飲關注一起討論學習,共同進入Flutter的精彩世界!