JS-YAML -YAML 1.2 JavaScript解析器/编写器
下载 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解析器/编写器的更多相关文章
- javascript解析器原理
浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作. JavaScript解析器工作步骤 1. “找一些东西”: v ...
- 浏览器中“JavaScript解析器”工作原理
浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作. JavaScript解析器工作步骤: 1.“找一些东西”: v ...
- javascript js获取url及url参数解析
js获取url及url参数解析 一.获取url: var url=window.location.herf; 二.url参数解析: function GetRequest() { var url = ...
- node.js 使用 UglifyJS2 高效率压缩 javascript 文件
UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 ...
- 小矮人Javascript模块加载器
https://github.com/miniflycn/webkit-dwarf 短小精悍的webkit浏览器Javascript模块加载器 Why 我们有许多仅基于webkit浏览器开发的应用 无 ...
- JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决
JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...
- javascript解析引擎(每天有学习一点篇)
======================================================= 有一段时间,经常耳闻web前端的福音,对高性能的V8议论纷纷. 其实对js解析引擎没有深 ...
- Js把URL中的参数解析为一个对象
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...
- RequireJS 是一个JavaScript模块加载器
RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node. 使用RequireJ ...
随机推荐
- Unity调用PC摄像头
转载于Unity3d圣典里面,具体哪位大侠写的我忘咯. using UnityEngine; using System.Collections; public class CameraTest : M ...
- Python的UI库
https://github.com/realitix/vulkan https://github.com/swistakm/pyimgui https://wxpython.org
- Spine学习七 - spine动画资源+ Unity Mecanim动画系统
前面已经讲过 Spine自己动画状态机的动画融合,但是万一有哥们就是想要使用Unity的动画系统,那有没有办法呢?答案是肯定的,接下来,就说说如何实现: 1. 在project面板找打你导入的Spin ...
- jumpserver如何在远程时使用复制粘贴-windwos系统下
jumpserver堡垒机搭建好了,但是在使用的时候,有时候会出现远程下不能复制粘贴,这让体验十分不爽. 于是着手解决这个问题,附上参考链接,感谢大佬:http://itren.xiaolee.net ...
- Qt绘图学习(1)
paintEvent()被调用的时机;1.当窗口第一次被show()的时候,Qt程序会自动产生一个绘图事件,调用绘图事件:2.重新调整窗口部件大小的时候,系统也会产生一个绘制事件.3.当窗口部件被其他 ...
- Vue 3.0 中令人激动的新功能:Composition API
正如你所期望的那样,Vue 3带来了很多令人兴奋的新功能.值得庆幸的是,Vue团队主要是在当前API的基础上引入了一些补充和改进,而不是进行重大更改,所以已经了解Vue 2的人应该很快就会对新的语法感 ...
- 企业网站还是要考虑兼容至少IE10
中国国情,大部分企业还在使用win7,IE浏览器.为了兼容这些,还是少用比较VUE等一些高级的框架,改为使用jquery.用惯了VUE,jquey好多忘得差不多了,其中遇到的问题及解决方案 ajax, ...
- 虚拟PWN初探
前言 之前看到星盟Q群里面的消息,Freedom师傅在B站直播关于虚拟pwn入门的公开课,然后就去听了一波,感觉受益匪浅.之前一直以为虚拟pwn是超级复杂的东西,今年打比赛也遇到了好几次,一直无从下手 ...
- MySQL<=>是什么鬼
官网描述 NULL-safe equal. This operator performs an equality comparison like the = operator, but returns ...
- Asp.Net Core Log4Net 配置分多个文件记录日志(不同日志级别)
本文所有配置都是在core3.1环境下. 首先看看最终的效果. 请求监控:对每次请求的相关信息做一个记录. 全局异常:我不想我的错误信息,跟其他的信息混合在一起,查看的时候不大方便. 应用日志:这个主 ...