
yaml 是什么?
在 github 一些開(kāi)源項(xiàng)目里經(jīng)??梢钥吹?.travis.yml 文件,后來(lái)接觸持續(xù)集成這個(gè)概念時(shí)發(fā)現(xiàn)很多文件都是 .yml 后綴的文件。我在 阮一峰-YAML 語(yǔ)言教程 里了解了它的作用以及基本寫(xiě)法,他的那篇文章描述的略微有點(diǎn)啰嗦,實(shí)際看到的大多數(shù)配置文件還是及其簡(jiǎn)單的,而我們要做的是能讀懂它們,就像讀懂 .json 一樣。
yaml 語(yǔ)言(或者說(shuō)是一種規(guī)范吧)可以編寫(xiě) .yml 文件,和 json 一樣是配置文件。也許是有人認(rèn)為 json 的寫(xiě)法不爽,于是乎發(fā)明了這玩意,通過(guò)下面的例子,可以看到 yaml 寫(xiě)的配置文件確實(shí)要比 json 方便很多。
編寫(xiě)規(guī)則
- 大小寫(xiě)敏感
json 里也是大小寫(xiě)敏感的,這點(diǎn)二者一樣。
- 使用縮進(jìn)表示層級(jí)關(guān)系
json 中使用 {} 的嵌套表示層級(jí),而 yaml 使用縮進(jìn),后者更方便一些。
#表示注釋
json 文件中不允許寫(xiě)注釋?zhuān)瑢?duì)于很長(zhǎng)配置文件全靠字面意思猜挺痛快的,yaml 可以寫(xiě)注釋?zhuān)?100:
數(shù)據(jù)結(jié)構(gòu)
配置文件理應(yīng)十分簡(jiǎn)潔,與 json 相比,不用頻繁的寫(xiě) {} 和 [],畢竟換行和 - 符號(hào)更加簡(jiǎn)潔,字符串也不需要頻繁的加引號(hào)(無(wú)論是單引號(hào)還是雙引號(hào))。
對(duì)象
# conf.yml
animal: pets
hash: { name: Steve, foo: bar }
轉(zhuǎn)換為 json 為:
{
{ "animal": "pets" },
{ "hash": { "name": "Steve", "foo": "bar" } }
}
數(shù)組
# conf.yml
Animal:
- Cat
- Dog
- Goldfish
轉(zhuǎn)換為 json 為:
{ "Animal": [ "Cat", "Dog", "Goldfish" ] }
字符串
# conf.yml
# 正常情況下字符串不用寫(xiě)引號(hào)
str: 這是一行字符串
# 字符串內(nèi)有空格或者特殊字符時(shí)需要加引號(hào)
str: '內(nèi)容: 字符串'
null
# conf.yml
parent: ~
.yml 中 ~ 表示 null,轉(zhuǎn)換為 json 為:
{ "parent": null }