原文地址:https://zhangjinbo619.github.io/note/2018/05/30/yaml.html
目的
因个人博客通过jekyll搭建,后发现_config.yml里面的语法比较神奇,可读性极高。所以查了相关资料,想具体了解下该标记语言的特性和应用场景。
什么是yaml?
YAML ="YAML Ain't Markup Language"
官方网站的解释:YAML ="YAML Ain't Markup Language"(缩写为YAML)。这是一种数据序列化(serialization )语言,是一种可读的文本的数据结构,它的设计目标是使人们容易读,程序容易处理。它类似XML,但是比XML简单。
维基百科解释:为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
个人理解:可读性极高的标记语言。
为什么要用yaml?
- YAML 的数据组织主要依靠的是空白,缩进,分行等结构,可读性好。
- YAML 实现简单,解析成本很低,和脚本语言的交互性好。
- YAML 可读性是在太强了,看的就爽。虽然它也支持json array的写法,但是不建议这样用,那样个人感觉就失去了魅力。
- YAML 解析支持各种主流语言:
C/C++/C#/.net
、java
、pthon
、ruby
、javascript
等等。 - YAML 运作主要依赖大纲式的缩进来决定结构,这有效解决了界定符冲突(Delimiter collision)的问题
- YAML 数据形态不依赖引号之特点,使的YAML文件可以利用区块,轻易的插入各种其他类型文件,如:XML、SDL、JSON,甚至插入另一篇YAML。
- YAML 注解由井字号( # )开始,可以出现在一行中的任何位置,你json注释一个给我看看?(有了新欢,emmm...)
什么时候用yaml?
商城的发票日志demo
--- !
invoice: 34843
date : 2001-01-23
bill-to: &id001
given : Chris
family : Dumars
address:
lines: |
458 Walkman Dr.
Suite #292
city : Royal Oak
state : MI
postal : 48046
ship-to: *id001
product:
- sku : BL394D
quantity : 4
description : Basketball
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
tax : 251.42
total: 4443.52
comments:
Late afternoon is best.
Backup contact is Nancy
Billsmer @ 338-4338.
错误日志demo
---
Time: 2001-11-23 15:01:42 -5
User: ed
Warning:
This is an error message
for the log file
---
Time: 2001-11-23 15:02:31 -5
User: ed
Warning:
A slightly different error
message.
---
Date: 2001-11-23 15:03:17 -5
User: ed
Fatal:
Unknown variable "bar"
Stack:
- file: TopClass.py
line: 23
code: |
x = MoreObject("345\n")
- file: MoreClass.py
line: 58
code: |-
foo = bar
配置项demo
--- #这个例子就是该文章yaml配置,是不是一目了然、通俗易懂 ^_^
layout: blog
tech: true
title: "yaml 学习笔记"
background-image: "http://zhangjinbo619-github.oss-cn-hangzhou.aliyuncs.com/zhangjinbo619.github.io/yaml-logo.png"
date: "2018-05-30"
category: note #book,game,note,chat,code,image,web,link,design,lock
tags:
- yaml
---
参考
- YAML 官网
- 维基百科 YMAL
- 百度百科 YAML
- YAML 应用