一、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)記語言 ”(縮寫為 YAML)是一種 數(shù)據(jù)序列化語言 ,旨在 對(duì)人類友好 ,并且可以與現(xiàn)代編程語言很好地配合完成常見的 日常任務(wù) 。
不是標(biāo)記語言 : 誰是標(biāo)記語言,XML就是。XML被設(shè)計(jì)為與標(biāo)準(zhǔn)通用標(biāo)記語言 (SGML) 向后兼容,SGML 旨在支持結(jié)構(gòu)化文檔。了解更多XML知識(shí):XML是什么與為什么
數(shù)據(jù)序列化語言 : 使用yaml承載來數(shù)據(jù),并在程序之間傳遞,這部分職責(zé)與XML、JSON相似。
對(duì)人類友好 : 使得非專業(yè)人士也能輕松閱讀。
編程語言日常任務(wù) : 程序本身的屬性、依賴關(guān)系表達(dá),程序運(yùn)行過程產(chǎn)生的數(shù)據(jù),程序之間數(shù)據(jù)的傳遞等這些任務(wù),都要以一種形態(tài)表達(dá)出來,常見的有:配置文件、日志文件、進(jìn)程間消息傳遞、跨語言數(shù)據(jù)共享等等。
二、YAML為什么產(chǎn)生?
YAML的產(chǎn)生是為了:提高人們對(duì)“數(shù)據(jù)交換格式”的可讀性;數(shù)據(jù)可在編程語言之間交換。
而JSON的產(chǎn)生是為了:簡(jiǎn)單性和通用性。JSON的生成和解析很簡(jiǎn)單,但人類的可讀性相對(duì)差些。
三、YAML長(zhǎng)啥樣?
先來直觀地看看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約定與語法
(1)約定
大小寫敏感;
層級(jí)關(guān)系使用縮進(jìn)來表示(用空格,不用TAB鍵;敲幾個(gè)空格不限,但相同層級(jí)左側(cè)要對(duì)齊);
注釋使用 # , # 前帶空格;
內(nèi)容塊:起始使用 --- ;結(jié)束使用 ... ;
重復(fù)內(nèi)容的定義:錨點(diǎn)標(biāo)簽&表達(dá)被引用的內(nèi)容,*表達(dá)引用。
(2)語法
總的來說,支持的基本數(shù)據(jù)結(jié)構(gòu): 對(duì)象 、列表以及純量 。
對(duì)象: 也稱字典,使用key:value來表達(dá)。
表達(dá)方式一:
Key1:
key11: value11
Key12: value12
表達(dá)方式二:
Key1: { key11: value11, child-key12: value12 }
列表 : 也稱序列、數(shù)組。
表達(dá)方式一:
values:
- value1
- value2
- value3
表達(dá)方式二:
values: [value1, value2, value3]
純量 : Null、布爾、字符串、整數(shù)、浮點(diǎn)數(shù)、日期和時(shí)間等基本數(shù)據(jù)類型。
- 領(lǐng)域YAML規(guī)范約定
不同領(lǐng)域都有各自的YAML規(guī)范約定。
第三部分的YAML文件是docker-compose,其規(guī)范約定在Compose Specification中,詳細(xì)內(nèi)容參見鏈接3
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論