ecmascript6保留关键字-JSON的流行与崛起|Linux中国

2023-08-23 0 4,869 百度已收录

我们不禁想知道为什么 XML 的厄运来得如此之快,以至于在短短十年左右的时间里,“异步 JavaScript 和 XML”这个名字就变成了一个讽刺性的用词不当。

--两位历史

谢谢

翻译自|twobithistory.org

作者|两位历史

译者|LCTT/流水

JSON 已经占领了世界。 如今,当任何两个应用程序通过 Internet 相互通信时,您可以打赌它们正在使用 JSON。 它已被所有小型企业采用:在前 10 个最流行的 Web API 套接字(主要由 Google、Facebook 和 Twitter 提供)列表中,只有一个 API 套接字以 XML 格式公开数据。 1 此列表中的 Twitter API 因此做了一个生动的缩影:它对 XML 格式的支持于 2013 年终止,当时发布的新版本 API 取消了 XML 格式,转而仅使用 JSON。 JSON 在程序编码层面和文件存储方面也被广泛采用:在 StackOverflow(LCTT 评论:程序员问答网站)上,现在关于 JSON 的问题比其他数据交换格式要多。 2

XML 一直存在于很多地方。 它用于网络上的 SVG 和 RSS/Atom 提要。 当Android开发者想要获取用户权限时,需要在自己的APP的manifest文件中进行声明——这个文件是XML格式的。 XML 的替代品不仅仅是 JSON。 很多人都在使用 YAML 或 Google 的 ProtocolBuffers 等技术,但这种技术远不如 JSON 流行。 目前,JSON 是通过网络进行通信的应用程序的首选合约格式。

考虑到自 2005 年以来 Web 编程世界一直觊觎“异步 JavaScript 和 XML”而不是“异步 JavaScript 和 JSON”的技术潜力,您可以看到 JSON 的统治地位是多么惊人。 实际上,这可能与两种通信格式的流行无关,而只是反映了缩写“AJAX”似乎比“AJAJ”更有吸引力。 而且,虽然一些人(实际上不是很多)在 2005 年就已经使用 JSON 来取代 XML,但我们不禁想知道 XML 的厄运是否来得如此之快,以至于在短短十年左右的时间里,“异步 JavaScript 和 XML”这个名字就已经出现了。成为一个非常讽刺的用词不当。 那么这十年到底发生了什么? JSON 是如何在如此多的应用程序中取代 XML 的? 谁提出了当今世界各地的工程师和系统使用和依赖的这些数据格式?

JSON 的诞生

2001年4月,发送了第一条JSON格式的消息。 这条消息是从纽约湾区车库里的一台计算机发出的,标志着计算历史上的一个重要时刻。 道格拉斯·克罗克福德 (Douglas Crockford) 和奇普·晨星 (Chip Morningstar) 是一家名为 StateSoftware 的技术咨询公司的联合创始人,他们在晨星的车库里测试一个想法时成为了新闻焦点。

早在“AJAX”一词被创造之前,Crockford 和 Morningstar 就试图构建可用的 AJAX 应用程序,但浏览器并不擅长于此。 他们希望在初始页面加载后将数据传递到应用程序,但针对所有浏览器使这变得不可能。

这在昨天看来似乎难以置信,请记住,2001 年,Internet Explorer (IE) 代表了网络浏览器的尖端技术产品。 早在1999年,Internet Explorer 5就支持了最初的XMLHttpRequest,开发人员可以使用一个名为ActiveX的框架来访问这个对象。 Crockford 和 Morningstar 能够使用这种技术(在 IE 中)来获取数据,而在 Netscape4(他们想要支持的另一种浏览器)中,这些解决方案不可用。 因此Crockford和Morningstar不得不使用不同的系统来兼容不同的浏览器。

第一条 JSON 消息如下所示:

  1.    document.domain = 'fudco';

  2.    parent.session.receive(

  3.        { to: "session", do: "test",

  4.          text: "Hello world" }

  5.    )

消息中只有一小部分类似于我们今天所知的 JSON,它本身是一个 HTML 文档,其中包含一些 JavaScript。 类似 JSON 的部分只是传递给名为 receive() 的函数的 JavaScript 对象文字。

Crockford 和Morningstar 决定滥用HTML 的frame() 来发送数据。 他们可以使框架指向返回上述 HTML 文档的 URL。 收到 HTML 后,JavaScript 代码片段将运行,并且数据对象文本可以按原样传递回应用程序。 只要小心地规避浏览器保护策略(即不允许子窗口访问父窗口),这些技术就可以正常工作。 可以看出,Crockford和Morningstar通过明确设置文档的域来达到目的。 (这些基于帧的技术,有时称为隐藏帧技术,通常在 20 世纪 90 年代末使用,在 XMLHttpRequest 技术广泛使用之前。3)

ecmascript6保留关键字-JSON的流行与崛起|Linux中国

第一条 JSON 消息的令人惊讶之处在于,它实际上并不是第一次使用新的数据格式。 这是 JavaScript! 事实上,以这种方式使用 JavaScript 的想法是如此简单,以至于 Crockford 自己说他并不是第一个这样做的人。 他说,早在 1996 年,Netscape 就有人使用 JavaScript 字段文字来交换消息。 4 因为消息是 JavaScript,所以不需要任何特殊的解析工作,JavaScript 类库可以处理所有事情。

原始 JSON 消息实际上与 JavaScript 库发生冲突。 JavaScript 保留了大量的关键字(ECMAScript 6 版本有 64 个保留字),Crockford 和 Morningstar 无意中在他们的 JSON 中使用了保留字。 他们使用do作为键值,但do是协程中的保留字。 由于 JavaScript 使用了太多的保留字,Crockford 做出了一个决定:由于不可避免地要使用此类保留字,因此要求所有 JSON 键名都添加冒号。 生成的键值会被JavaScript类库识别为字符串,这意味着这些保留字也可以安全地使用。 这就是为什么现在 JSON 键名必须用冒号构成的原因。

Crockford 和 Morningstar 意识到这项技术可以应用于多种应用。 我想将其命名为“JSML”,意思是 JavaScript 标记语言,但发现这个缩写已经被称为 JavaSpeech 标记语言的东西使用了。 因此,他们决定使用“JavaScriptObjectNotation”,缩写为 JSON。 他们开始向客户销售,但很快发现客户不愿意冒险使用缺乏官方规格的未知技术。 因此,Crockford 决定编写一份规范。

2002年,Crockford购买了JSON.org[1]域名ecmascript6保留关键字,并放入了JSON语法和协程的示例。 该网站已经上线并运行,现在包含一个明显的 JSONECMA 标准链接,该标准将于 2013 年获得批准。网站建成后,Crockford 并没有过多宣传,但很快发现很多人都在提交各种编程语言的 JSON 解析器实现。 JSON 的血统似乎与 JavaScript 紧密相关,但很明显,JSON 特别适合不同语言之间的数据交换。

AJAX引起的误解

2005年,JSON发生了一次大爆炸。 那一年,一位名叫 Jesse James Garrett 的网页设计师和开发人员在一篇博客文章中创造了“AJAX”一词。 他小心翼翼地指出:AJAX并不是一项新技术,而是“几种蓬勃发展的技术以某种强大的新方式汇集在一起​​”。 5 AJAX 是 Garrett 针对这些流行 Web 应用程序的新方法。 开发方法的名称。 他的博客文章接着描述了开发人员如何使用 JavaScript 和 XMLHttpRequest 来构建比传统网页更具响应性和状态的新型应用程序。 他还使用已经使用 AJAX 技术的 Gmail 和 Flickr 网站作为反例。

那么,“AJAX”中的“X”代表 XML。 但在随后的问答帖子中,Garrett 强调 JSON 可以完全取代 XML。 他写道:“虽然 XML 是 AJAX 客户端数据输入和输出最强大的技术,但 JavaScriptObjectNotation (JSON) 等技术或任何类似的数据结构方式都可以达到相同的效果。”6

开发人员确实发现在构建 AJAX 应用程序时使用 JSON 很容易ecmascript6保留关键字,而且许多人更喜欢它而不是 XML。 讽刺的是,人们对 AJAX 日益增长的兴趣导致了 JSON 的流行。 大约在这个时候,JSON 引起了博客圈的注意。

2006 年,Dave Winer(一位多产的博客作者和许多基于 XML 的技术(例如 RSS 和 XML-RPC)背后的开发人员)指责 JSON 毫不奇怪地重新发明了 XML。 虽然人们觉得数据交换格式之间的竞争不会导致某种技术的衰落。 它说:

ecmascript6保留关键字-JSON的流行与崛起|Linux中国

毫无疑问,我可以编写一个库来解析 JSON,但让我们看看他们重新发明一个东西有多大意义,由于某种原因 XML 本身对他们来说不够好(我很想听听为什么)。 谁愿意做这种自相矛盾的事情呢? 找到一棵树并将节点串起来。 你可以马上尝试一下。 7

我理解维纳的沮丧。 事实上,喜欢XML的人并不多。 甚至 Winer 也说他不喜欢 XML。 8 但是 XML 被设计为可供任何人使用,而且几乎可以用于所有可以想象到的事情。 归根结底,XML实际上是一种元语言,它允许您为特定应用程序定制特定于领域的语言。 如Web信息流技术RSS和SOAP(简单对象访问契约)就是反例。 维纳认为,由于通用交换格式的好处,尝试达成共识很重要。 XML的灵活性应该可以满足任何人的需求,但是JSON格式呢,它并没有提供比XML更多的东西,不仅摆脱了繁琐的东西,使XML变得更加灵活。

克罗克福德阅读了维纳的文章并发表了评论。 针对 JSON 重新发明 XML 的挑战,Crockford 说:“重新发明轮子的用处在于获得更好的轮子。”9

JSON 与 XML

到2014年,JSON早已得到ECMA标准和RFC的正式认可。 它有自己的 MIME 类型。 JSON早已进入大联盟时代。

为什么 JSON 比 XML 更流行?

在 JSON.org[1] 网站上,Crockford 总结了 JSON 的一些优点。 他表示,JSON 的句型很少,而且结构是可预测的,因此 JSON 更容易被人类和机器理解。 10 其他博主仍然担心 XML 的冗长和“尖括号负担”。 11 XML中的每个开始标记都必须与结束标记相匹配,这意味着XML文档包含大量冗余信息。 未压缩时,XML 文档比信息量相当的 JSON 文档大得多,但更重要的是,这也使 XML 文档更难以阅读。

Crockford 还声称 JSON 的另一个巨大优势是它被设计为数据交换格式。 12 从一开始,其目的就是在应用程序之间传递结构化信息。 而XML虽然也可以用来传输数据,但它最初被设计为一种文档标记语言。 它是从 SGML(通用标准标记语言)发展而来,而 SGML 又是从一种名为 Scribe 的标记语言发展而来,致力于发展成为类似于 LaTeX 的文字处理系统。 在 XML 中,标签可以包含所谓的“混合内容”,即嵌入标签包围短语和短语的文本。 这会让人们浮现出一幅用红蓝笔记录的原稿的画面,这是对标记语言核心思想的隐喻。 另一方面,JSON 不支持清晰且复杂的混合内容模型,但这意味着它的结构足够简单。 文档的最佳建模是树,但 JSON 放弃了这些文档的想法,Crockford 将 JSON 表示限制为字典和字段,这是所有程序员在构建程序时都会使用的最基本、最常见的元素。 熟悉的元素。

最后,我认为人们不喜欢 XML 因为它令人困惑。 可能具有欺骗性的地方在于,有如此多不同的风格。 乍一看,XML 本身与其子语言(例如 RSS、ATOM、SOAP 或 SVG)之间的界线并不明显。 典型的 XML 文档的第一行指示 XML 版本,之后 XML 文档应符合特定的子语言。 有一些变化需要考虑,特别是与 JSON 相比,JSON 非常简单,以至于永远不会编写新版本的 JSON 规范。 XML 的设计者试图通过使 XML 成为唯一的数据交换格式来统治所有格式,但他们却陷入了典型的程序员陷阱:过度设计。 XML 非常广泛且概念化,因此很难简单地使用。

2000年,发起了使HTML符合XML标准的活动,发布了符合XML标准的HTML开发规范,也就是后来的XHTML。 事实上,一些浏览器厂商立即开始支持这个新标准,但也很明显的是,大多数基于 HTML 技术的开发人员并不愿意改变他们的习惯。 新标准要求对 XHTML 文档进行严格验证,而不是基于 HTML 的基准测试。 但大多数网站都依赖 HTML 的包含规则。 到 2009 年,编写第二版 XHTML 标准的尝试已被中止,因为未来已变得明朗,HTML 将演变成 HTML5(不强制要求接受 XML 规则的标准)。

如果 XHTML 的努力成功,那么 XML 可能会成为其设计者所希望的通用数据格式。 想象一下 HTML 文档和 API 响应具有完全相同的结构的世界。 在这样的世界中,JSON 可能不会像今天这样无处不在。 但我将 HTML 的失败视为 XML 阵营的道德失败。 如果 XML 不是 HTML 的最佳工具,那么对于其他应用程序可能有更好的工具。 在这个世界,我们的世界,很容易听到像 JSON 格式这样简单且定制的东西将会取得更大的成功。

如果您喜欢这篇博文,它将每两周更新一次! 在 Twitter 上关注 @TwoBitHistory[2] 或订阅 RSSfeed[3] 以获取更新通知。

1.#软件↩

2.%2Cxml%2C协议缓冲区%2Cyaml%2Ccsv↩

3.扎卡斯,尼古拉斯·C.,等人。 “什么是阿贾克斯?” 专业 Ajax,第 2 版,Wiley,2007 年。 ↩

4.↩

5.↩

6.同上 ↩

ecmascript6保留关键字-JSON的流行与崛起|Linux中国

7.↩

8.↩

9.#comment-26383 ↩

10. ↩

11. ↩

12. ↩

通过:

作者:Two-BitHistory[15] 主题:lujun9972 译者:流水 校对:wxy

本文由 LCTT 原创编译,Linux China Honor 首发

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 ecmascript ecmascript6保留关键字-JSON的流行与崛起|Linux中国 https://www.wkzy.net/game/147424.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务