YAML 使用入门教程
时间:2021-9-23 作者:smarteng 分类: 开发工具
什么是 YAML,为什么我们现在应该开始使用它?
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
YAML 的配置文件后缀为 .yml,如:app.yml 。
YAML 特性
YAML 有一些超级特性,使其优于其他序列化格式:
- 易于略读。
- 易于使用。
- 可在编程语言之间移植。
- 敏捷语言的原生数据结构。
- 支持通用工具的一致模型。
- 支持一次性处理。
- 表现力和可扩展性。
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
我将通过一些例子进一步向你展示 YAML 的强大。
你能弄清楚下面发生了什么吗?
-------
# My grocery list
groceries:
- Milk
- Eggs
- Bread
- Butter
...
上面的例子包含了一个简单的杂货购物清单,它是一个完全格式化的 YAML 文档。在 YAML 中,字符串不加引号,而列表需要简单的连字符和空格。一个 YAML 文档以 ---
开始,以 ...
结束,但它们是可选的。YAML中的注释以 #
开始。
缩进是 YAML 的关键。缩进必须包含空格,而不是制表符。虽然所需的空格数量是灵活的,但保持一致是个好主意。
基本元素
集合
YAML 有两种类型的集合。列表(用于序列)和字典(用于映射)。列表是键值对,每个值都在一个新的行中,以连字符和空格开始。字典也是键值对,每个值都是一个映射,包含一个键、一个冒号和空格以及一个值。
例如:
# My List
groceries:
- Milk
- Eggs
- Bread
- Butter
# My dictionary
contact:
name: Ayush Sharma
email: myemail@example.com
列表和字典经常被结合起来,以提供更复杂的数据结构。列表可以包含字典,而字典可以包含列表。
字符串
YAML 中的字符串不需要加引号。多行字符串可以用 |
或 >
来定义。前者保留了换行符,而后者则没有。
例如:
my_string: |
This is my string.
It can contain many lines.
Newlines are preserved.
my_string_2: >
This is my string.
This can also contain many lines.
Newlines aren't preserved and all lines are folded.
锚点
YAML 可以通过节点锚点来获得可重复的数据块。 &
字符定义了一个数据块,以后可以用 *
来引用。例如:
billing_address: &add1
house: B1
street: My Street
shipping_address: *add1
至止你对 YAML 的了解就足以让你开始工作了。你可以使用在线 YAML 解析器来测试。如果你每天都与 YAML 打交道,那么 这个方便的备忘单会对你有所帮助。