zoukankan      html  css  js  c++  java
  • 什么是YAML?

    YAML是YAML不是一种标记语言的外语缩写 [1] (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

    它是类似于标准通用标记语言的子集XML数据描述语言,语法比XML简单很多。

    适用场景

    脚本语言

    由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 。除了Java 和 Go,其他都是脚本语言。

    序列化

    YAML比较适合做序列化。因为它是宿主语言数据类型直转的。

    配置文件

    YAML做配置文件也不错。写YAML要比写XML快得多(无需关注标签或引号),并且比ini文档功能更强。

    比如Ruby on Rails的配置就选用的YAML。对ROR而言,这很自然,也很省事.

    由于兼容性问题,不同语言间的数据流转建议不要用YAML.

    语言比较

    虽然YAML是参考JSON,XML和SDL等语言,不过跟这些语言比起来,YAML仍有自己的特色。

    JSON

    JSON的语法是YAML1.2版的子集,同时非常接近YAML1.0与1.1版的子集,因此大部分的JSON文件都可以被YAML的剖析器剖析。这是因为JSON的语法结构和YAML的内置格式相同。虽然大范围的分层也可以使用类似JSON的内置格式,不过YAML标准并不建议这样使用,除非这样编写能让文件可读性增加。YAML的许多扩展在JSON是找不到的,如:进阶资料形态、关系锚点、字串不需要双引号、映射资料形态会储存键值的顺序。

    JSON首先是一种机器交换格式。在这个假设前提下,如果只是API接口的调用,或者是跨程序语言间的数据交换,总之只要是机器生成交换数据,那就没有YAML这种扩展语言出场的意义,都是标准化JSON直接搞定。

    YAML和JSON的关系,犹如LESS和CSS——本身是一个规范标准的超集,便于人类识读编写。但又既可以通过一些辅助手段直接使用,更能向下编译到符合标准的子集范围之内。

    XML和SDL

    XML和SDL标签概念,在YAML中是找不到的。对于数据结构序列(尽管这是有争议的),标签属性的特色就是可以将资料及复杂资料附加资讯分离,并将各种原生数据结构(如:杂凑表、阵列)用同一种语言表示。YAML则以资料的可扩展性作为替代。(包括为了模拟物件的类别型态)在YAML本身的规范中,并没有类似XML的语言定义文件纲要(language-defined document schema descriptors)──例如验证自己本身的结构是否正确的文件。不过,YAML纲要描述语言(YAML schema descriptor language)是存在的。另外还有YAXML──用XML描述YAML的结构──可以让XML Schema与XSLT转换程式应用在YAML之上。况且,在一般使用的情况下,YAML丰富的定义型态之语法已经提供了足够的方式来辨认YAML文件是否正确。

    参考资料

    The Official YAML Web Site
    https://yaml.org/

    YAML快速入门 - 简书
    https://www.jianshu.com/p/97222440cd08

    YAML:很可能不如想象中那么好 - 云+社区 - 腾讯云
    https://cloud.tencent.com/developer/news/281837

  • 相关阅读:
    Android开发--去掉标题栏
    Android开发app如何设定应用图标下的应用名称为汉字以及自定义图标
    mysql的sql其他 SQL中inner join、outer join和cross join的区别
    中文乱码问题 -js页面传值乱码
    liunx Centos Xshell 简单命令汇总
    html 属性及相关应用-实例
    时间格式转换
    三元表达式
    Grid++Report生成简单的条形码、Excel导出、图表控件 等
    jmp指令的简单应用
  • 原文地址:https://www.cnblogs.com/wzwyc/p/10676448.html
Copyright © 2011-2022 走看看