YAML语法记录
记录一下yaml的语法,方便以后查找,前端领域用yaml相对来说少一点,一旦用忘了语法很难受,特此记录。
一、YAML简介
YAML(Yet Another Markup Language)是一种直观的、可读性高并且容易被人类阅读和理解的数据序列化格式。它常用于配置文件,但也可以用于数据存储、传输等其他场景。YAML的设计目标包括易读性、与脚本语言的交互性好等。
二、YAML基本语法
1. 基本结构
YAML文件由键值对组成,键和值之间用冒号:
分隔,冒号后面要加一个空格。
key: value
2. 层级关系
YAML使用缩进来表示层级关系,通常使用两个空格进行缩进。注意,不能使用制表符(Tab)进行缩进,因为不同的系统对制表符的宽度解释可能不同。
parent: child1: value1 child2: value2
3. 多行字符串
使用|
可以保留字符串中的换行符,>
则会将换行符替换为一个空格。
key1: | line1 line2 key2: > line1 line2
4. 数组
使用-
可以表示数组或列表。
fruits: - apple - banana - cherry
5. 特殊字符
如果值中包含特殊字符,可以使用引号(单引号或双引号)将其括起来。双引号内的特殊字符会被转义,单引号内的则不会。
key1: "value with \"special\" characters" key2: 'value with ''special'' characters'
6. 锚点和别名
YAML支持使用锚点(&
)和别名(*
)来复用数据。
defaults: &defaults adapter: postgres host: localhost development: database: dev <<: *defaults test: database: test <<: *defaults
三、YAML进阶语法
1. 复合结构
YAML支持将数组和对象嵌套使用,构建更复杂的数据结构。
users: - id: 1 name: Alice emails: - alice@example.com - alice.work@example.com - id: 2 name: Bob emails: - bob@example.com
2. 标签
YAML支持使用标签来指定数据的类型。例如,使用!!str
可以显式地将值指定为字符串类型,使用!!int
可以将其指定为整数类型。
explicit_string: !!str 123 explicit_integer: !!int "123"
3. 流式集合
YAML支持使用流式集合语法来表示数组或列表,这在某些情况下可以使语法更简洁。
fruits: [apple, banana, cherry]
4. 合并键
YAML的合并键(<<
)允许你将一个映射的内容合并到另一个映射中。这在配置文件中特别有用,可以避免重复配置。
defaults: &defaults color: red size: large item1: name: ball <<: *defaults item2: name: shirt <<: *defaults
四、YAML使用注意事项
- 避免使用制表符
如前所述,YAML文件应使用空格进行缩进,避免使用制表符,以免因系统差异导致解析错误。
- 注意冒号后的空格
YAML语法中,冒号后面必须跟一个空格,否则会导致解析错误。
- 字符串引号的一致性
如果字符串值中包含引号,应确保使用的引号类型一致,或者使用转义字符。
- 锚点和别名的使用
锚点和别名是YAML中的高级特性,可以使数据复用更加简洁。但是,过度使用可能会使文件变得难以阅读和理解,因此应适度使用。
五、YAML工具
- YAML解析器
有许多语言和库提供了YAML解析器,可以将YAML文件解析为相应的数据结构。例如,Python中的PyYAML
库和JavaScript中的js-yaml
库。
- YAML格式化工具
YAML格式化工具可以帮助你格式化YAML文件,使其更加易读和美观。一些集成开发环境(IDE)和代码编辑器(如VS Code)提供了内置的YAML格式化支持。
- YAML验证工具
YAML验证工具可以帮助你检查YAML文件的语法是否正确。这对于排查因语法错误导致的问题非常有用。
六、YAML在前端开发中的应用
YAML在前端开发中的应用主要体现在配置文件和静态数据上。例如,一些前端项目使用YAML格式的配置文件来管理项目的配置信息,如环境变量、构建选项等。此外,YAML还可以用作静态数据源,通过解析YAML文件来生成页面内容。