当前位置: 首页 > news >正文

十分钟快速掌握 YML YAML 文件

YML(YAML)(YAML Ain’t Markup Language) 作为一种数据序列化格式,因其简洁、易读和强大的表达能力,被广泛应用于各种场景,如Docker Compose、Kubernetes、CI/CD工具(如GitLab CI)、Spring Boot配置等。

1. 什么是YML?

YML是YAML的缩写,是一种人类可读的数据序列化语言。它旨在以一种简洁、直观的方式表示数据结构,如列表、映射和标量值。YML文件通常以.yml.yaml为扩展名。

核心特点:

  • 简洁易读:使用缩进和冒号表示结构,避免了XML或JSON中的冗余符号。
  • 支持多种数据类型:包括字符串、数字、布尔值、列表、映射等。
  • 跨语言支持:大多数编程语言都有YML解析库。

2. 基本语法规则

YML的语法规则非常简单,但有几个关键点需要注意:

2.1 缩进
  • YML使用缩进来表示层级关系,不能使用Tab键,必须使用空格
  • 同一级别的元素必须左对齐,缩进数量决定层级。
  • 示例:
    person:name: Aliceage: 30hobbies:- reading- hiking
    
    这里,nameage缩进2个空格,hobbies下的readinghiking缩进4个空格。
2.2 键值对
  • 使用冒号:分隔键和值,冒号后必须有一个空格。
  • 示例:
    key: value
    name: John Doe
    
2.3 注释
  • 使用#添加单行注释。
  • 示例:
    # 这是一个注释
    name: Alice  # 这也是注释
    

3. 数据类型详解

3.1 标量(Scalar)

标量是最基本的数据类型,包括字符串、数字、布尔值等。

  • 字符串

    • 可以不加引号,也可以使用单引号'或双引号"
    • 双引号支持转义字符(如\n),单引号不支持。
    • 示例:
      string1: Hello World
      string2: 'Hello World'
      string3: "Hello\nWorld"  # 换行
      
  • 数字

    • 整数、浮点数、科学计数法。
    • 示例:
      integer: 42
      float: 3.14
      scientific: 1.23e4
      
  • 布尔值

    • 使用truefalse
    • 示例:
      active: true
      debug: false
      
  • null

    • 表示空值,使用null~
    • 示例:
      name: null
      age: ~
      
3.2 列表(Sequence)

列表是一组有序的值,使用短横线-表示。

  • 基本列表

    fruits:- apple- banana- orange
    
  • 嵌套列表

    matrix:- - 1- 2- - 3- 4
    
  • 内联列表(使用方括号):

    colors: [red, green, blue]
    
3.3 映射(Mapping)

映射是键值对的集合,类似于JSON对象。

  • 基本映射

    person:name: Aliceage: 30city: Beijing
    
  • 内联映射(使用花括号):

    person: {name: Alice, age: 30}
    
3.4 复合结构

YML支持复杂的嵌套结构。

  • 列表中的映射

    users:- name: Aliceage: 30- name: Bobage: 25
    
  • 映射中的列表

    company:name: Tech Corpemployees:- Alice- Bob
    

4. 高级特性

4.1 多行字符串

YML支持多行字符串,使用|(保留换行)或>(折叠换行)。

  • 保留换行(|

    description: |This is a multi-linestring that preservesline breaks.
    
  • 折叠换行(>

    summary: >This is a multi-linestring that will befolded into a single line.
    
4.2 引用与锚点

使用&定义锚点,*引用锚点,避免重复。

  • 示例
    defaults: &defaultsport: 8080host: localhostservice1:<<: *defaultsname: Service Aservice2:<<: *defaultsname: Service Bport: 9090  # 覆盖默认端口
    
4.3 合并键(<<

用于合并映射,常与锚点结合使用。


5. 常见应用场景

5.1 Docker Compose
version: '3'
services:web:image: nginx:latestports:- "80:80"db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: password
5.2 Kubernetes
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: nginximage: nginx:1.14.2
5.3 Spring Boot配置
server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: password

6. 注意事项

  1. 缩进一致性:确保缩进正确,否则会导致解析错误。
  2. 冒号后空格:键和值之间必须有一个空格。
  3. 避免Tab:始终使用空格,不要用Tab。
  4. 大小写敏感:YML是大小写敏感的。
http://www.dtcms.com/a/359860.html

相关文章:

  • LLM记账智能体-MCP服务-实现步骤与效果展示
  • Qt精华版打包教程,支持windows和Linux,每种平台支持2种方案
  • MCP SDK 示例一
  • Spring MVC 九大组件源码深度剖析(六):HandlerExceptionResolver - 异常处理的艺术
  • 第八章 光照
  • 蓝牙AOA智慧仓储管理系统:实现仓储数字化升级的精准定位解决方案
  • 解决IDEA 2025.2升级报错:Scannning Files to Index卡住问题分析与修复
  • python复杂代码如何让ide自动推导提示内容
  • 【系列12】端侧AI:构建与部署高效的本地化AI模型 第11章:边缘设备与IoT部署
  • Wi-Fi技术——网络安全
  • 现代软件系统架构:前端、后端、数据库、部署、算法与AI学习的结构与交互分析
  • 学习:uniapp全栈微信小程序vue3后台(8)
  • USB虚拟化应用5:VirtualFIDO2 虚拟硬件安全密钥,智能卡,yubico,支持X,FB,GITHUB等各种网站双重认证,让你的账户登录绝对安全
  • LeetCode 1855.下标对中的最大距离
  • a3002盘式制动器刹车cad➕三维图➕设计说明书
  • DreamForge
  • leetcode 268 丢失的数字
  • 前端学习——JavaScript基础
  • Vue2 与 Vue3 路由钩子的区别及用法详解
  • 电科金仓KingbaseES V9数据库:国产数据库的自主创新与行业实践深度解析
  • Nginx四层负载均衡实战指南
  • Redis 7.0 高性能缓存架构设计与优化
  • Spring Data JPA 派生查询方法命名速查表
  • 【51单片机】【protues仿真】基于51单片机智能晾衣架系统
  • git中使用SSH的配置
  • 从零开始搭建使用 TDengine:新用户快速上手指南
  • STAR法则
  • Encoder编码器
  • kafka服务端架构总览
  • sublime MAC系统快捷键及常见问题