YAML 使用入门
什么是 YAML，为什么我们现在应该开始使用它？
YAML
125.82.19.154
这个和markdown有什么本质区别呢？&nbsp;&nbsp;又造一个轮子吗，搞不懂。
来自重庆的 Chrome 93.0|Windows 10 用户
2021-09-23T20:11:10.000
49.86.93.2
YAML生于2001，markdown生于2004。<br />
程序员造“轮子”不是很正常吗，别人的“轮子”都不适合自己的“车”。
来自江苏扬州的 Firefox 92.0|Windows 10 用户
2021-09-24T19:08:35.000
什么是 YAML，为什么我们现在应该开始使用它？

> 
> 什么是 YAML，为什么我们现在应该开始使用它？
> 
> 
> 


![](/data/attachment/album/202109/23/095242fw0qzzp5fe6e565z.jpg "young woman working on a laptop")


[YAML](https://yaml.org/)（<ruby> YAML 不是标记语言 <rt>  YAML Ain't Markup Language </rt></ruby>）是一种适宜阅读理解的数据序列化语言。它的语法简单而易于阅读。它不包含引号、打开和关闭的标签或大括号。它不包含任何可能使人类难以解析嵌套规则的东西。你可以看一下你的 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://yaml.org/refcard.html) 会对你有所帮助。


*这篇文章最初发表在[作者的个人博客](https://notes.ayushsharma.in/2021/08/introduction-to-yaml)上，并经授权改编。*




---


via: <https://opensource.com/article/21/9/intro-yaml>


作者：[Ayush Sharma](https://opensource.com/users/ayushsharma) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

