一、YAML是什么?
YAML 首次发表于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 不是标记语言 ”(缩写为 YAML)是一种 数据序列化语言 ,旨在 对人类友好 ,并且可以与现代编程语言很好地配合完成常见的 日常任务 。
不是标记语言 : 谁是标记语言,XML就是。XML被设计为与标准通用标记语言 (SGML) 向后兼容,SGML 旨在支持结构化文档。了解更多XML知识:XML是什么与为什么
数据序列化语言 : 使用yaml承载来数据,并在程序之间传递,这部分职责与XML、JSON相似。
对人类友好 : 使得非专业人士也能轻松阅读。
编程语言日常任务 : 程序本身的属性、依赖关系表达,程序运行过程产生的数据,程序之间数据的传递等这些任务,都要以一种形态表达出来,常见的有:配置文件、日志文件、进程间消息传递、跨语言数据共享等等。
二、YAML为什么产生?
YAML的产生是为了:提高人们对“数据交换格式”的可读性;数据可在编程语言之间交换。
而JSON的产生是为了:简单性和通用性。JSON的生成和解析很简单,但人类的可读性相对差些。
三、YAML长啥样?
先来直观地看看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文件怎么看?
(1)约定
大小写敏感;
层级关系使用缩进来表示(用空格,不用TAB键;敲几个空格不限,但相同层级左侧要对齐);
注释使用 # , # 前带空格;
内容块:起始使用 --- ;结束使用 ... ;
重复内容的定义:锚点标签&表达被引用的内容,*表达引用。
(2)语法
总的来说,支持的基本数据结构: 对象 、列表以及纯量 。
对象: 也称字典,使用key:value来表达。
表达方式一:
Key1:
key11: value11
Key12: value12
表达方式二:
Key1: { key11: value11, child-key12: value12 }
列表 : 也称序列、数组。
表达方式一:
values:
- value1
- value2
- value3
表达方式二:
values: [value1, value2, value3]
纯量 : Null、布尔、字符串、整数、浮点数、日期和时间等基本数据类型。
不同领域都有各自的YAML规范约定。
第三部分的YAML文件是docker-compose,其规范约定在Compose Specification中,详细内容参见链接3
全部0条评论
快来发表一下你的评论吧 !