快速熟悉后缀为yml的文件

一、YAML 是什么?

YAML 文件(通常扩展名是 .yml.yaml

入手一个项目,查看各种配置,先看yml文件

YAML 的全称是 "YAML Ain't Markup Language" (YAML 不是标记语言),它是一种人类可读的数据序列化格式 ,专门用来写配置文件

它像 JSONXML 一样,可以存储数据(比如键值对、列表、嵌套结构)。

二、YAML 的基本语法

1. 键值对(Key-Value)

: 分隔键和值,冒号后必须加空格

XML 复制代码
name: "张三"
age: 25

2. 嵌套结构(字典)

缩进表示层级关系(通常用 2 个空格,不能用 Tab):

XML 复制代码
person:
  name: "李四"
  age: 30
  address:
    city: "北京"
    zip: "100000"

3. 列表(数组)

- 表示列表项,缩进对齐

XML 复制代码
hobbies:
  - "游泳"
  - "读书"
  - "编程"

4. 多行字符串

|> 表示多行文本:

XML 复制代码
description: |
  这是一个多行文本,
  可以换行显示,
  保留格式。

5. 注释

# 开头:

XML 复制代码
# 这是注释,不会被程序读取
version: 1.0  # 版本号

🚀 三、YAML 的用途

YAML 的主要用途是写配置文件,因为它:

易读易写:比 JSON/XML 更简洁,适合人类直接编辑。

支持复杂结构:可以嵌套对象、列表,适合配置复杂系统。

被广泛支持 :几乎所有编程语言都有 YAML 解析库(如 Python 的 PyYAML、Java 的 SnakeYAML

💻 四、YAML 的常见使用场景

1. Spring Boot 项目配置(application.yml

Spring Boot 默认用 YAML 写配置,比如数据库连接、服务器端口等:

XML 复制代码
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: 123456

2. Docker 配置(docker-compose.yml

XML 复制代码
version: "3"
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: "123456"

3. Kubernetes 配置(deployment.yml

定义容器部署规则:

XML 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80

4. CI/CD 流水线配置(如 GitHub Actions)

定义自动化构建步骤:

XML 复制代码
name: Build and Test
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: npm install
      - run: npm test

5. 游戏配置(如 Unity 的 ProjectSettings.yml

存储游戏参数:

XML 复制代码
Player:
  health: 100
  speed: 5.0
Enemies:
  - type: "Zombie"
    damage: 10
  - type: "Ghost"
    damage: 5

⚠️ 五、YAML 的注意事项

缩进必须一致:只能用空格(通常 2 个),不能用 Tab,否则会报错。

键名不需要引号(除非包含特殊字符):

XML 复制代码
# 正确
name: "张三"
# 也可以省略引号(如果值是纯字母或数字)
name: 张三

布尔值 :直接写 true/false(不用引号):

XML 复制代码
debug: true

数字:直接写数字(不用引号):

XML 复制代码
port: 8080

📊 六、YAML vs JSON vs XML

特性 YAML JSON XML
可读性 ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐
语法 缩进 + :/- 括号 + : 标签 <tag>
注释 支持 # 不支持 支持 <!-- -->
用途 配置文件 数据交换(API 响应) 文档标记(如 HTML)

🎯 总结

YAML 是干啥的?

专门用来写配置文件的,比 JSON/XML 更简洁。

啥时候用?

需要配置复杂系统时(如 Spring Boot、Docker、K8s)。

怎么写?

记住 键: 值 + 缩进,避免 Tab 和多余符号。

相关推荐
yoyo_zzm几秒前
Laravel9.x新特性全解析
数据库·mysql·nginx
九转成圣1 分钟前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
2501_901200539 分钟前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
yc_122428 分钟前
用 Visual Studio 远程调试 Linux:从零到流畅的完整指南
linux·ide·visual studio
直奔標竿30 分钟前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
计算机安禾1 小时前
【Linux从入门到精通】第31篇:防火墙漫谈——iptables与firewalld防护指南
linux·运维·php
金銀銅鐵1 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
下一页盛夏花开1 小时前
ubuntu 20中安装QT以后出现红色空心断点
linux·运维·ubuntu
m0_495496411 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
sanshanjianke2 小时前
Thunderobot 911ME 笔记本 Linux 风扇控制研究
linux