📘 YAML学习指南
🌟 什么是YAML?
YAML(YAML Ain't html Language)是一个可读性高的数据序列化格式。它的设计目标是:
- 📝 对人友好,易读易写
- 🔄 支持复杂数据结构
- 🌐 跨语言支持
- 🎯 适合配置文件使用
为什么选择YAML?
- 比JSON更易读
- 支持注释功能
- 支持更复杂的数据结构
- 广泛应用于各种配置文件
🛠️ 基础语法
1. 缩进规则
- 使用缩进表示层级关系
- 缩进必须使用空格
- 相同层级元素左对齐
- 通常使用2个或4个空格
yaml
# 正确的缩进示例
parent:
child1: value1
child2: value2
child3:
grandchild1: value3
grandchild2: value42. 注释语法
使用 # 添加注释:
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:002. 复合数据类型
数组/列表
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=production2. 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 test3. 前端项目配置
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💡 最佳实践
- 保持一致的缩进风格
- 合理使用注释增加可读性
- 复杂值使用引号包裹
- 善用锚点和引用减少重复
- 使用适当的数据类型
🔍 常见问题解决
- 缩进错误
yaml
# ❌ 错误示例
parent:
wrong-indent:
value
# ✅ 正确示例
parent:
correct-indent:
value- 特殊字符处理
yaml
# 包含特殊字符时使用引号
special: 'Hello: World'
command: "echo 'Hello'"