YAML 学习笔记

yaml

原文地址: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#/.netjavapthonrubyjavascript等等。
  • 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 应用

你可能感兴趣的:(YAML 学习笔记)