下载 JS-YAML -YAML 1.2 JavaScript解析器/编写器
JS-YAML -YAML 1.2 JavaScript解析器/编写器

在线演示
这是YAML的实现,YAML是一种对人友好的数据
串行化的语言。它一开始是作为PyYAML端口的
完全重写从零开始。现在它非常快,并且支持1.2规范。
安装
js的YAML模块

npm install js-yaml

CLI可执行 如果你想从CLI检查你的YAML文件,全局安装js-yaml:

npm install -g js-yaml

使用

usage: js-yaml [-h] [-v] [-c] [-t] file

Positional arguments:
file File with YAML document(s) Optional arguments:
-h, --help Show this help message and exit.
-v, --version Show program's version number and exit.
-c, --compact Display errors in compact mode
-t, --trace Show stack trace on error

为浏览器绑定的YAML库 & lt; !——esprima只需要!!js /函数——比; & lt;脚本src = " esprima.js "祝辞& lt; / script> & lt;脚本src = " js-yaml.min.js "祝辞& lt; / script> & lt;脚本type = " text / javascript祝辞 var doc = jsyaml。负载(“问候:你好\ nname:世界”); & lt; / script> 浏览器支持主要用于在线演示。如果你发现任何错误-感觉 免费发送拉请求与修复。还要注意的是,IE和其他老浏览器 运行需要es5垫片。 注: 我们没有资源来支持browserified版本。别指望会是这样 很好的测试。如果出现问题,不要指望快速修复。 ! !默认情况下,js/函数在浏览器捆绑包中不起作用。如果你真的需要 首先加载esprima解析器(通过amd或直接)。 ! !bin在浏览器中会返回数组,因为浏览器不支持 js缓冲区和增加缓冲区垫片是完全没用的实践。 API 这里我们介绍了最有用的方法。如果你需要高级细节(创建 您自己的标记),请参阅wiki和 更多的例子 信息。 const yaml = require('js-yaml'); const fs = require('fs'); //获取文档,或在错误时抛出异常 尝试{ const doc = yaml.safeLoad(fs.readFileSync('/home/ixti/example)yml, use utf8)); console.log (doc); } catch (e) { console.log (e); } safeLoad (string [, options]) 推荐的加载方式。将字符串解析为单个YAML文档。返回一个 普通对象、字符串、数字、null或未定义,或在出错时抛出YAMLException异常。默认情况下, 不支持regexps、函数和未定义。这种方法对于不可信的数据是安全的。 选项: 文件名(默认:null) -用作文件路径的字符串 错误/警告消息。 onWarning(默认值:null) -在警告消息上调用的函数。 对于每个警告,加载器将使用一个YAMLException实例来调用此函数。 schema (default: DEFAULT_SAFE_SCHEMA)——指定要使用的架构。 FAILSAFE_SCHEMA -仅字符串、数组和纯对象: http://www.yaml.org/spec/1.2/spec.html#id2802346 JSON_SCHEMA—所有json支持的类型: http://www.yaml.org/spec/1.2/spec.html#id2803231 CORE_SCHEMA—与JSON_SCHEMA相同: http://www.yaml.org/spec/1.2/spec.html#id2804923 DEFAULT_SAFE_SCHEMA—所有支持的YAML类型,没有不安全的类型 (! !js /未定义,! !js / regexp和! ! js /函数): http://yaml.org/type/ DEFAULT_FULL_SCHEMA—所有支持的YAML类型。 json(默认:false)—与json的兼容性。解析行为。如果为真,则映射中的重复键将覆盖值,而不是抛出错误。 注意:这个函数不理解多文档源,它抛出 在这些例外。 注意:JS-YAML不支持特定于模式的标记解析限制。 因此,在YAML规范中并没有严格定义JSON模式。 它允许数字在任何符号,使用Null和Null作为Null,等等。 核心模式也没有这样的限制。它允许用二进制表示整数。 加载(字符串[,选项]) 小心使用不可信的来源。与safeLoad()相同,但使用 DEFAULT_FULL_SCHEMA默认-添加一些javascript特定类型: ! !js /函数,! !js / regexp和! ! js /未定义。对于不可信的消息来源,您 必须另外验证对象结构以避免注入: const untrusted_code = '"toString": !<”功能(){very_evil_thing();}”'; //我只是在转换字符串,有什么问题吗? 需要(“js-yaml”).load (untrusted_code) +” safeLoadAll(字符串[,迭代器][,选项]) 与safeLoad()相同,但是可以理解多文档源。适用于 如果指定的话,迭代器将返回每个文档,或返回文档数组。 const yaml = require('js-yaml'); yaml。safeLoadAll(data, function (doc)) { console.log (doc); }); loadAll(字符串[,迭代器][,选项]) 与safeLoadAll()相同,但默认使用DEFAULT_FULL_SCHEMA。 safeDump(对象[,选项]) 将对象序列化为YAML文档。使用DEFAULT_SAFE_SCHEMA,所以它会使用 如果试图转储regexp或函数,则抛出异常。然而,您可以 通过将skipInvalid选项设置为true来禁用异常。 选项: 缩进(默认为2)-缩进使用的宽度(空格)。 noArrayIndent(默认:false) -当为真时,将不会给数组元素添加缩进级别 skipInvalid(默认:false)——不要抛出无效类型(如函数) ),并跳过具有此类类型的对和单值。 流级别(默认值:-1)——指定何时进行切换时的嵌套级别 集合的块到流样式。-1表示到处都是block style style - "tag" =>“住在猪圈里勒”地图。每个标签可能有自己的一组样式。 schema (default: DEFAULT_SAFE_SCHEMA)指定要使用的模式。 sortKeys(默认为false)——如果为真,则在转储YAML时对键进行排序。如果一个 函数,使用函数对键进行排序。 线宽(默认值:80)-设置最大线宽。 noRefs(默认为false)——如果为真,不要将重复的对象转换为引用 noCompatMode(默认:false) -如果为真,不要尝试与旧版本兼容 yaml的版本。目前:不要引用“是”、“否”等,这是YAML 1.1所要求的 如果是真流序列将被压缩,省略a、b之间的空格。'[a,b]',省略了key: value之间的空格,并引用了key。如。'{"a":b}'在对漂亮的URL查询params使用yaml时很有用,因为空格是%-编码的。 下表显示了可选的样式。“规范”, “二进制”…)可用于每个标签(例如。! !空,! !int……)。Yaml 输出显示在右侧=>(默认设置)或->

!!null
"canonical" -> "~"
"lowercase" => "null"
"uppercase" -> "NULL"
"camelcase" -> "Null" !!int
"binary" -> "0b1", "0b101010", "0b1110001111010"
"octal" -> "01", "052", "016172"
"decimal" => "1", "42", "7290"
"hexadecimal" -> "0x1", "0x2A", "0x1C7A" !!bool
"lowercase" => "true", "false"
"uppercase" -> "TRUE", "FALSE"
"camelcase" -> "True", "False" !!float
"lowercase" => ".nan", '.inf'
"uppercase" -> ".NAN", '.INF'
"camelcase" -> ".NaN", '.Inf'

例子: safeDump(对象,{ “风格”:{ ”! !null': 'canonical' //转储null为~ }, 'sortKeys': true //对对象键进行排序 }); 转储(对象[,选项]) 与safeDump()相同,但没有限制(默认使用DEFAULT_FULL_SCHEMA)。 支持YAML类型 标准YAML标记和相应的JavaScipt类型的列表。另请参阅 YAML标记讨论和 YAML库类型。

!!null ''                   # null
!!bool 'yes' # bool
!!int '3...' # number
!!float '3.14...' # number
!!binary '...base64...' # buffer
!!timestamp 'YYYY-...' # date
!!omap [ ... ] # array of key-value pairs
!!pairs [ ... ] # array or array pairs
!!set { ... } # array of objects with given keys and null values
!!str '...' # string
!!seq [ ... ] # array
!!map { ... } # object

JavaScript-specific标签

!!js/regexp /pattern/gim            # RegExp
!!js/undefined '' # Undefined
!!js/function 'function () {...}' # Function

警告 注意,在JS-YAML中使用数组或对象作为键。JS不允许对象 方法将数组字符串化(通过调用toString()方法) 现在开始添加它们。 --- 吗?[foo, bar] : -巴兹 吗?{foo: bar} : -巴兹 - - - - - -巴兹 {“foo, bar”:“记者”,“(对象对象)”:[“记者”,“记者”]} 此外,还不支持读取隐式块映射键上的属性。 因此,无法加载以下YAML文档。 和锚foo: foo:酒吧 *锚:复制钥匙 记者:蝙蝠 *锚:复制钥匙 js-yaml为企业 可用的一部分Tidelift订阅 js-yaml和数千个其他包的维护者正在与Tidelift合作,为用于构建应用程序的开放源码依赖项提供商业支持和维护。节省时间、降低风险并改善代码的运行状况,同时向您所使用的依赖项的维护者支付费用。学习更多的知识。本文转载于:http://www.diyabc.com/frontweb/news33292.html

JS-YAML -YAML 1.2 JavaScript解析器/编写器的更多相关文章

  1. javascript解析器原理

    浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作. JavaScript解析器工作步骤 1. “找一些东西”: v ...

  2. 浏览器中“JavaScript解析器”工作原理

    浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作. JavaScript解析器工作步骤: 1.“找一些东西”: v ...

  3. javascript js获取url及url参数解析

    js获取url及url参数解析 一.获取url: var url=window.location.herf; 二.url参数解析: function GetRequest() { var url = ...

  4. node.js 使用 UglifyJS2 高效率压缩 javascript 文件

    UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 ...

  5. 小矮人Javascript模块加载器

    https://github.com/miniflycn/webkit-dwarf 短小精悍的webkit浏览器Javascript模块加载器 Why 我们有许多仅基于webkit浏览器开发的应用 无 ...

  6. JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决

    JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...

  7. javascript解析引擎(每天有学习一点篇)

    ======================================================= 有一段时间,经常耳闻web前端的福音,对高性能的V8议论纷纷. 其实对js解析引擎没有深 ...

  8. Js把URL中的参数解析为一个对象

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. RequireJS 是一个JavaScript模块加载器

    RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node. 使用RequireJ ...

随机推荐

  1. 初学WebGL引擎-BabylonJS:第2篇-基础模型体验

    此次学习进度会比之前快很多,有了合适的学习方法后也就会有更多的乐趣产生了. 接上一章代码 上章代码 <!DOCTYPE html> <html> <head> &l ...

  2. string matching(拓展KMP)

    Problem Description String matching is a common type of problem in computer science. One string matc ...

  3. 解决ORA-00257无法删除用户

    今日早晨在客户反馈不能登陆系统了,查看oracle日志.发现如下错误ORA-00257: archiver error. Connect internal only, until freed.该错误是 ...

  4. OpenvSwitch系列之六 vlan隔离

    局域网游戏代表:红色警戒 Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令 ...

  5. Mybatis-解决属性名和字段名不一致的问题

    解决属性名和字段名不一致的问题 目录 解决属性名和字段名不一致的问题 1. 问题 2. ResultMap 1. 问题 在数据库中,密码字段为pwd,而在实体类中为password package c ...

  6. MySQL的事务机制和锁(InnoDB引擎、MVCC多版本并发控制技术)

    一.事务(数据库的事务都通用的定义) 1.1 事务定义 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.事务通常以 BEGIN TRANSACTION 开始 ...

  7. Scanner输入方法

    输入语句: * import java.util.Scanner; * System.out.println("请输入你想输入的东西:"); * Scanner (自定义)sc = ...

  8. 结合源码谈谈ThreadLocal!

    目录 ThreadLocal的作用 ThreadLocal 1.对象初始化 2.获取变量 3.设置变量 4.移除变量 ThreadLocalMap 1.Entry 2.初始化 3.获取Entry 4. ...

  9. CountDownLatch、CyclicBarrier

    CountDownLatch CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行 ...

  10. Redis学习(二)redis的特点

    一.Redis的特性 Redis是基于内存,常用作于缓存的技术 Redis实现的是分布式缓存,如果有多台实例(机器)的话,每个实例都共享一份缓存,缓存具有一致性. 常见的性能问题一般都是由于数据库(磁 ...