立即开始使用 YAML

什么是 YAML,为什么现在是我们开始使用它的时候了?
25 位读者喜欢这篇文章。
woman on laptop sitting at the window

CC BY 3.0 US Mapbox Uncharted ERG

YAML(YAML 不是标记语言)是一种人类可读的数据序列化语言。它的语法简洁且人类可读。它不包含引号、开始和结束标签或大括号。它不包含任何可能使人类更难以解析嵌套规则的内容。您可以扫描您的 YAML 文档并立即了解发生了什么。

YAML 功能

YAML 具有一些使其优于其他序列化格式的超级功能

  • 易于浏览。
  • 易于使用。
  • 可在编程语言之间移植。
  • 敏捷语言的本机数据结构。
  • 支持通用工具的一致模型。
  • 支持单次处理。
  • 富有表现力且可扩展。

我将通过一些示例进一步向您展示 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,那么这份方便的速查表将对您有所帮助。


本文最初发表在作者的个人博客上,并已获得许可进行改编。

接下来阅读什么
标签
https://ayushsharma.in
我是一名作家和 AWS 解决方案架构师。我与初创公司和企业合作进行软件工程、DevOps、SRE 和云架构方面的工作。我在 https://ayushsharma.in 上撰写关于我的经验的文章。

评论已关闭。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.