序列化的JavaScript

下载 序列化的JavaScript
序列化的JavaScript 将JavaScript序列化为包含正则表达式、日期和函数的JSON超集。 概述 这个包中的代码最初是作为表示状态的内部模块。为了扩展它的用途,它现在以序列化-javascript的形式存在——npm上的一个独立包。 您可能想知道:JSON.stringify()!呢?我们发现有时需要序列化JavaScript函数、正则表达式、日期、集合或映射。一个很好的示例是使用客户端URL路由的web应用程序,其中路由定义是需要从服务器共享到客户机的regexp。但是这个模块对于节点进程之间的通信也很有用。 从这个包的单一导出函数返回的字符串是文字JavaScript,它可以被保存到一个。js文件,或嵌入到一个HTML文档通过制作一个脚本的内容。元素。 HTML字符和JavaScript行终止符会自动转义。 请注意ES6集的串行化&map需要支持Array.from(在IE或Node中不可用<0.12)或数组。来自polyfill。 安装 安装使用npm: 安装序列化-javascript 使用 var serialize = require('serialize-javascript'); 序列化({ str:“字符串”, num: 0, obj: {foo: 'foo'}, [1,2,3], bool:没错, 零:空, undef:未定义的, 正:无穷, 日期:新日期(“2016年4月28日星期四22:02:17 GMT”) 新地图([['hello', 'world']]), set: new set ([123,456]), fn: function echo(arg) {return arg;}, 再保险:/ ([^ \ s] +) / g, 大:长整型数字(10), }); 以上将产生以下字符串输出: {”str”:“弦”、“num”:0,“obj”:{“foo”:“foo”},“加勒比海盗”:(1、2、3),“bool”:真的,“零”:空,“undef”:定义,“正”:无穷,“日期”:新的日期(“2016 - 04 - 28 t22:02:17.000z”),“地图”:新地图([[“你好”、“世界”]]),“设置”:新的([123456]),fn:函数回波(arg){返回参数;},“重新”:新的正则表达式(((^ \ \ \ \ s] +)”,“g”),“大”:长整型数字(10)}” 注意:要生成美化的字符串,可以传递第二个可选参数给serialize(),以定义缩进使用的空格数。 自动转义HTML字符 这个包的主要特性是将代码序列化为文字JavaScript字符串,通过添加它作为脚本的内容,可以嵌入到HTML文档中。元素。为了保证安全,HTML字符和JavaScript行终止符会自动转义。 序列化({ haxorXSS:“& lt; / script>” }); 以上将产生以下字符串,HTML转义输出,这是安全的放入一个HTML文档,因为它不会导致内联脚本元素终止: ”{haxorXSS”:“\ \ u003C \ \ u002Fscript \ \ u003E“}” 您可以将一个可选的不安全参数传递给serialize()来进行直接序列化。 选项 serialize()函数接受一个options对象作为它的第二个参数。所有选项默认为未定义: options.space 这个选项与可以传递给JSON.stringify的空间参数相同。它可用于向序列化输出中添加空格和缩进,使其更具可读性。 序列化(obj,{空间:2}); options.isJSON 此选项是用于序列化()的信号,表明被序列化的对象不包含任何函数或regexps值。这使得热路径能够将序列化速度提高三倍以上。如果您正在序列化大量数据,并且知道它是纯JSON,那么您可以启用这个选项来加速。 注意:在使用此选项时,输出仍将被转义,以防止XSS。 序列化(obj, {isJSON:真}); options.unsafe 此选项向serialize()发出信号,表示我们希望直接进行转换,而不需要XSS保护。需要显式地将该选项设置为true。HTML字符和JavaScript行终止符不会被转义。你得自己滚。 序列化(obj,{不安全:真}); options.ignoreFunction 此选项表示不希望序列化JavaScript函数的serialize()。 就像JSON一样处理函数。stringify可以,但是其他功能也可以正常工作。 序列化(obj, {ignoreFunction:真}); 反序列化 对于某些用例,您可能还需要对字符串进行反序列化。这显然不是本模块的一部分。然而,你可以很容易地写它自己: 函数反序列化(serializedJavascript) { 返回eval('(' + serializedJavascript + ')'); } 注意:不要忘记序列化的javascript周围的括号,因为左括号{将被认为是主体的开始。 许可证 这个软件是免费使用的雅虎!公司。BSD许可。 有关许可文本和版权信息,请参阅许可文件。本文转载于:http://www.diyabc.com/frontweb/news33295.html

你可能感兴趣的:(序列化的JavaScript)