yaml入门教程

2025-05-12 04:56:55

1、YAML(英语发音:/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达资料序列的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言[1],另外Ingy döt Net与Oren >Ben-Kiki也是这语言的共同设计者[2]。目前已经有数种编程语言或脚本语言支援(或者说解析)这种语言。

2、YAML仍然是一门标记性语言,但为了强调这门语言以数据为中心,而不是以标记语言为中心。采用反向缩略语重新命名。

yaml入门教程

3、基本语法规则:1.大小写敏感 2.使用缩进表示层级关系 3.不允许使用TAB键来缩进,只允许使用空格键来缩进 4.缩进的空格数量不重要 5.使用"#"来表示注释支持的数据格式:1.对象:键值对的集合,又称映射(mapping) / 哈希(hashes)/ 字典(dictionary) 2.数组: 一组按次序排列的值,又称序列(sequence) / 列表(list) 3.纯量(scalars):单个的,不可再分的值

yaml入门教程

5、数组一组连词线开头的行,构成一个数组- Cat- Dog- Goldfish转为JavaScript[ 'Cat', 'Dog', 'Goldfish' ]数据的子结构也是一个数组,可以在该项下面缩进空格来表示层级关系- - Cat - Dog - Goldfish转为JavaScript[ [ 'Cat', 'Dog', 'Goldfish'] ]数组也可以采用行内表示法animal: [Cat, Dog]转为JavaScript{ animal: ['Cat', 'Dog']}复合结构对象和数组可以结合使用,形成复合结构languages: - Ruby - Perl - Pythonwebsites: YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl: user.perl.org转为JavaScript{ languages: [ 'Ruby', 'Perl', 'Python'], websites: { YAML: 'yaml.org', Ruby: 'ruby-lang.org', Python: 'python.org', Perl: 'user.perl.org' }}

yaml入门教程

7、引用锚点 & 和别名 * , 可以用来引用defaults: &defaults 锾攒揉敫adapter: postgres host: localhost development: database: myapp_development, <<: *defaults test: database: myapp_test, <<: *defaults相当于defaults: adapter: postgres host: localhost development: database: myapp_development, adapter: postgres host: localhost test: database: myapp_test, adapter: postgres host: localhost&用来建立锚点(defaults),<<表示合并到当前数据,*用来引用锚点。下面另外一个例子- &showell Steve - Clark - Brian - Oren - *showell转为JavaScript[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]函数和正则表达式的转换这是js-yaml库特有的功能,可以把函数和正则表达式转为字符串#exmaple.ymlfn: function() { return 1 }reg: /test/解析上面的yml文件代码如下:var yaml = require('js-yaml');var fs = require('fs');try{ var doc = yaml.load( fs.readFileSync('./example.yml', 'utf8') );} catch(e){ console.warn(e);}从javaScript对象还原到yaml代码如下:var yaml = require('js-yaml'); var fs = require('fs'); var obj = { fn: function() { return 1 }, reg: /test/ } try{ fs.writeFileSync('./exmaple.js', yama.dump(obj), 'utf8') } catch(e) { console.log(e); }

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢