Skip to content

📘 YAML学习指南 ​

🌟 什么是YAML? ​

YAML(YAML Ain't html Language)是一个可读性高的数据序列化格式。它的设计目标是:

  • 📝 对人友好,易读易写
  • 🔄 支持复杂数据结构
  • 🌐 跨语言支持
  • 🎯 适合配置文件使用

为什么选择YAML? ​

  1. 比JSON更易读
  2. 支持注释功能
  3. 支持更复杂的数据结构
  4. 广泛应用于各种配置文件

🛠️ 基础语法 ​

1. 缩进规则 ​

  • 使用缩进表示层级关系
  • 缩进必须使用空格
  • 相同层级元素左对齐
  • 通常使用2个或4个空格
yaml
# 正确的缩进示例
parent:
  child1: value1
  child2: value2
  child3:
    grandchild1: value3
    grandchild2: value4

2. 注释语法 ​

使用 # 添加注释:

yaml
# 这是一个单行注释
key: value  # 行尾注释

# 多行注释示例
# 这是第一行注释
# 这是第二行注释
config:
  name: test

📊 数据类型详解 ​

1. 基本数据类型(标量) ​

字符串 ​

yaml
# 普通字符串
name: redis
version: '5.6'  # 使用引号避免类型转换

# 多行字符串(保留换行)
description: |
  这是第一行
  这是第二行
  每行的换行都会保留

# 多行字符串(折叠换行)
description: >
  这是一段很长的文本,
  它会被折叠成一行,
  但段落之间的空行会保留。

  这是新的一段。

数值 ​

yaml
# 整数
port: 6379
version: 5

# 浮点数
pi: 3.14159
version: 1.2

# 科学计数法
number: 1.23e+4

布尔值 ​

yaml
# 布尔值的多种写法
debug: true
enabled: false
switch: yes
status: no

空值 ​

yaml
# 表示空值的多种方式
nullable: ~
empty: null
not_defined:  # 直接留空

日期和时间 ​

yaml
# 日期
date: 2023-08-22

# 时间
time: 2023-08-22T15:30:00+08:00

2. 复合数据类型 ​

数组/列表 ​

yaml
# 方式一:短横线表示
fruits:
  - apple
  - banana
  - orange

# 方式二:行内表示
numbers: [1, 2, 3, 4, 5]

# 复杂数组
servers:
  - name: server1
    ip: 192.168.1.10
    ports:
      - 8080
      - 8081
  - name: server2
    ip: 192.168.1.11
    ports:
      - 9090
      - 9091

对象/映射 ​

yaml
# 基本对象
user:
  name: John
  age: 30
  skills:
    - JavaScript
    - Python

# 嵌套对象
database:
  mysql:
    host: localhost
    port: 3306
    credentials:
      username: root
      password: secret

🎯 实际应用案例 ​

1. Docker Compose配置 ​

yaml
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      - NODE_ENV=production

2. GitHub Actions工作流 ​

yaml
name: CI/CD Pipeline
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install Dependencies
        run: npm install
      - name: Run Tests
        run: npm test

3. 前端项目配置 ​

yaml
# package.yaml 示例
name: my-project
version: 1.0.0
scripts:
  dev: vite
  build: vite build
  preview: vite preview

dependencies:
  vue: ^3.2.0
  vuex: ^4.0.0
  vue-router: ^4.0.0

devDependencies:
  vite: ^2.0.0
  eslint: ^7.0.0

💡 最佳实践 ​

  1. 保持一致的缩进风格
  2. 合理使用注释增加可读性
  3. 复杂值使用引号包裹
  4. 善用锚点和引用减少重复
  5. 使用适当的数据类型

🔍 常见问题解决 ​

  1. 缩进错误
yaml
# ❌ 错误示例
parent:
wrong-indent:
    value

# ✅ 正确示例
parent:
  correct-indent:
    value
  1. 特殊字符处理
yaml
# 包含特殊字符时使用引号
special: 'Hello: World'
command: "echo 'Hello'"

📚 参考资料 ​