一、YAML是什么?
YAML 首次發(fā)表于2001 年,其官方文檔給出的描述:
“YAML Ain’t Markup Language” (abbreviated YAML) is a data serialization language designed to be human-friendly and work well with modern programming languages for common everyday tasks.
“YAML 不是標(biāo)記語(yǔ)言 ”(縮寫(xiě)為 YAML)是一種 數(shù)據(jù)序列化語(yǔ)言 ,旨在 對(duì)人類(lèi)友好 ,并且可以與現(xiàn)代編程語(yǔ)言很好地配合完成常見(jiàn)的 日常任務(wù) 。
不是標(biāo)記語(yǔ)言 : 誰(shuí)是標(biāo)記語(yǔ)言,XML就是。XML被設(shè)計(jì)為與標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言 (SGML) 向后兼容,SGML 旨在支持結(jié)構(gòu)化文檔。了解更多XML知識(shí):XML是什么與為什么
數(shù)據(jù)序列化語(yǔ)言 : 使用yaml承載來(lái)數(shù)據(jù),并在程序之間傳遞,這部分職責(zé)與XML、JSON相似。
對(duì)人類(lèi)友好 : 使得非專(zhuān)業(yè)人士也能輕松閱讀。
編程語(yǔ)言日常任務(wù) : 程序本身的屬性、依賴(lài)關(guān)系表達(dá),程序運(yùn)行過(guò)程產(chǎn)生的數(shù)據(jù),程序之間數(shù)據(jù)的傳遞等這些任務(wù),都要以一種形態(tài)表達(dá)出來(lái),常見(jiàn)的有:配置文件、日志文件、進(jìn)程間消息傳遞、跨語(yǔ)言數(shù)據(jù)共享等等。
二、YAML為什么產(chǎn)生?
YAML的產(chǎn)生是為了:提高人們對(duì)“數(shù)據(jù)交換格式”的可讀性;數(shù)據(jù)可在編程語(yǔ)言之間交換。
而JSON的產(chǎn)生是為了:簡(jiǎn)單性和通用性。JSON的生成和解析很簡(jiǎn)單,但人類(lèi)的可讀性相對(duì)差些。
三、YAML長(zhǎng)啥樣?
先來(lái)直觀地看看YAML文件(docker-compose),不求甚解。
version: "3.7"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
四、YAML文件怎么看?
- 了解YAML約定與語(yǔ)法
(1)約定
大小寫(xiě)敏感;
層級(jí)關(guān)系使用縮進(jìn)來(lái)表示(用空格,不用TAB鍵;敲幾個(gè)空格不限,但相同層級(jí)左側(cè)要對(duì)齊);
注釋使用 # , # 前帶空格;
內(nèi)容塊:起始使用 --- ;結(jié)束使用 ... ;
重復(fù)內(nèi)容的定義:錨點(diǎn)標(biāo)簽&表達(dá)被引用的內(nèi)容,*表達(dá)引用。
(2)語(yǔ)法
總的來(lái)說(shuō),支持的基本數(shù)據(jù)結(jié)構(gòu): 對(duì)象 、列表以及純量 。
對(duì)象: 也稱(chēng)字典,使用key:value來(lái)表達(dá)。
表達(dá)方式一:
Key1:
key11: value11
Key12: value12
表達(dá)方式二:
Key1: { key11: value11, child-key12: value12 }
列表 : 也稱(chēng)序列、數(shù)組。
表達(dá)方式一:
values:
- value1
- value2
- value3
表達(dá)方式二:
values: [value1, value2, value3]
純量 : Null、布爾、字符串、整數(shù)、浮點(diǎn)數(shù)、日期和時(shí)間等基本數(shù)據(jù)類(lèi)型。
- 領(lǐng)域YAML規(guī)范約定
不同領(lǐng)域都有各自的YAML規(guī)范約定。
第三部分的YAML文件是docker-compose,其規(guī)范約定在Compose Specification中,詳細(xì)內(nèi)容參見(jiàn)鏈接3
發(fā)布評(píng)論請(qǐng)先 登錄
很實(shí)用的PyYAML使用技巧

如何將udev規(guī)則和/或netplan config.yaml文件添加到Ubuntu devel rfs?
xml和YAML文件的寫(xiě)入_OpenCV3編程入門(mén)
OpenCV3編程入門(mén)-源碼例程全集-xml和YAML文件的讀取
OpenCV3編程入門(mén)-源碼例程全集-xml和YAML文件的寫(xiě)入
xjsonkits超輕量級(jí)JSON/xml/YAML解析門(mén)面API

學(xué)習(xí)Python值得收藏的小技巧
探討使用YAML文件定義Kubernetes應(yīng)用程序
模型精度驗(yàn)證及調(diào)優(yōu)建議

OpenCV中YAML配置文件讀寫(xiě)使用演示

ROS編寫(xiě)參數(shù)配置文件示例程序

評(píng)論