
yaml
原文地址:https://zhangjinbo619.github.io/note/2018/05/30/yaml.html
目的
因個人博客通過jekyll搭建,后發(fā)現_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 數據形態(tài)不依賴引號之特點,使的YAML文件可以利用區(qū)塊,輕易的插入各種其他類型文件,如:XML、SDL、JSON,甚至插入另一篇YAML。
- YAML 注解由井字號( # )開始,可以出現在一行中的任何位置,你json注釋一個給我看看?(有了新歡,emmm...??)
什么時候用yaml?
商城的發(fā)票日志demo
--- !<tag:clarkevans.com,2002:invoice>
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
---