🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 第六章 历史JavaScript的里程碑 JavaScript花了很长时间才能产生今天的影响。许多JavaScript相关技术存在一段时间,才被主流发现。 本节介绍从JavaScript创建到今天发生的情况。在整个过程中,只有最受欢迎的项目被提及,许多被忽略,即使它们是第一个。例如,列出了Dojo Toolkit,但也有不太为人知的[qooxdoo](http://qooxdoo.org/),它是在同一时间创建的。并列出了Node.js,即使[Jaxer](https://github.com/aptana/Jaxer)存在于它之前: **1997- [动态HTML](https://msdn.microsoft.com/en-us/library/ms533044(v=vs.85).aspx)** 动态HTML允许您动态更改网页的内容和外观。您可以通过操作页面的文档对象模型(DOM),树形数据结构来实现此目的。你可以做的事情包括改变内容,改变风格,显示和隐藏元素。动态HTML首先出现在Internet Explorer 4和Netscape Navigator 4中。 **1999- [XMLHttpRequest](http://www.w3.org/TR/XMLHttpRequest/)** 该API 允许客户端脚本向服务器发送HTTP或HTTPS请求,并通常以文本格式(XML,HTML,JSON)获取数据。它是在Internet Explorer 5中引入的。 **2001- [JSON](http://json.org/),一种基于javascript的数据交换格式** 2001年,Douglas Crockford命名并记录了JSON(JavaScript Object Notation),其主要思想是使用JavaScript语法以文本格式存储数据。JSON为对象,数组,字符串,数字和布尔值使用JavaScript文字来表示结构化数据。例如: ```json { "first": "Jane", "last": "Porter", "married": true, "born": 1890, "friends": [ "Tarzan", "Cheeta" ] } ``` 多年来,JSON已经成为XML的一个流行的轻量级替代品,特别是当结构化数据被表示而不是标记时。当然,JSON通过JavaScript很容易消费(参见第22章)。 **2004年 - [Dojo Toolkit](http://dojotoolkit.org/),一个用于编程大型JavaScript的框架** Dojo Toolkit提供了必要的基础设施来促进大型编程:继承库、模块系统、桌面样式的图形小部件的API等等。 **2005 - [Ajax](http://bit.ly/1oNW3Lf),基于浏览器的桌面级应用程序** Ajax 是一系列技术,为与桌面应用程序相媲美的网页带来了一定程度的交互性。2005年2月推出了一个可以通过Ajax实现的令人印象深刻的例子:Google Maps。此应用程序允许您平移和缩放世界地图,但只有当前可见的内容已下载到浏览器。在Google Maps出来之后,Jesse James Garrett注意到它与其他互动网站分享了一些特质。他称这些特质为Ajax,这是Asynchronous JavaScript和XML的缩写。[ 7 ] Ajax的两个基础是在后台异步加载内容(通过XMLHttpRequest),并通过动态HTML动态更新当前页面(通过动态HTML)。不再是总是执行完全的页面重新加载的情况,这可是一个相当大的易用性改进。 Ajax标志着JavaScript和动态Web应用程序的主流突破。有趣的是注意到,在这一点上,Ajax成分已经存在多年了。自从Ajax开始以来,其他数据格式已经变得流行(JSON而不是XML),使用其他协议(例如除了HTTP之外的Web Sockets),双向通信也是可能的。但是基本的技术还是一样的。然而,Ajax这个术语现在使用得更少,而且大部分已经被HTML5和Web Platform(这两者都意味着JavaScript加浏览器API)的综合术语所替代。 **2005 - [Apache CouchDB](http://couchdb.apache.org/),一个以JavaScript为中心的数据库** 大概CouchDB是一个JSON数据库:您可以提供JSON对象,而不需要提前指定模式。另外,您可以通过执行map / reduce操作的JavaScript函数来定义视图和索引。因此,CouchDB非常适合JavaScript,因为您可以直接使用本机数据。与关系数据库相比,没有映射相关的阻抗不匹配。与对象数据库相比,您避免了许多并发症,因为只存储数据,而不是行为。CouchDB只是几个类似的[NoSQL数据库](http://bit.ly/1oNYfCp)之一。他们大多数都有很好的JavaScript支持。 **2006- [jQuery](http://jquery.com/),帮助DOM操作** 该浏览器DOM是客户端Web开发中最痛苦的部分之一。jQuery通过抽象浏览器的差异,并提供强大的流畅的API来查询和修改DOM,从而使DOM操纵乐趣。 **2007- [WebKit](https://www.webkit.org/),采用移动网络主流** 基于KDE以前的工作,WebKit是由苹果公司于2003年推出的HTML引擎,它是2005年开放的。随着iPhone在2007年的推出,移动网络突然成为主流,几乎没有限制比较到非移动Web。 **2008- [V8](http://code.google.com/p/v8/),证明JavaScript可以快速** 当Google推出Chrome浏览器时,其亮点之一是一个名为V8的快速JavaScript引擎。它改变了JavaScript的缓慢感觉,使得其他浏览器供应商的速度竞争。V8是开源的,如果您需要一种广为人知的快速的嵌入式语言,就可以将其用作独立组件。 **2009- [Node.js](http://nodejs.org/),在服务器上实现JavaScript** Node.js可以实现负载良好的服务器。为此,它使用事件驱动,非阻塞I / O和JavaScript(通过V8)。Node.js创建者Ryan Dahl提到了选择JavaScript的以下原因: * “因为它是裸机,并没有I / O API。”[Node.js可以引入自己的非阻塞API。] * “Web开发人员已经使用它。”[JavaScript是一种广为人知的语言,尤其是在Web上下文中。] * “DOM API是基于事件的。每个人都已经习惯了没有线程和事件循环的运行。“[开发人员习惯于异步编码风格。] Dahl能够在事件驱动服务器和服务器端JavaScript(主要是[CommonJS](http://www.commonjs.org/)项目)的基础上建立早期工作。 Node.js对JavaScript程序员的吸引力超出了以熟悉的语言编程的能力; 您可以在客户端和服务器上使用相同的语言。这意味着您可以共享更多的代码(例如,用于验证数据),并使用诸如[同构JavaScript](http://bit.ly/1gWhLIs)的技术。同构JavaScript 是关于在客户端或服务器上组合网页,具有许多优点:页面可以在服务器上呈现,以便更快的初始显示,SEO,并且在不支持JavaScript或不太老版本的浏览器上运行。但是,它们也可以在客户端上进行更新,从而产生更加灵敏的用户界面。 **2009年 - PhoneGap,在HTML5中编写本机应用程序** PhoneGap 由一家叫做Nitobi的公司创建,后来被Adobe收购。PhoneGap的开源基础叫做Cordova。PhoneGap的最初任务是通过HTML5实现原生移动应用。此后,支持已扩展到非移动操作系统。目前支持的平台包括Android,Bada,BlackBerry,Firefox OS,iOS,Mac OS X,Tizen,Ubuntu,Windows(桌面)和Windows Phone。除了HTML5 API之外,还有用于访问本地功能(如加速度计,摄像头和联系人)的 PhoneGap专用API。 **2009 - [Chrome操作系统](http://bit.ly/1oO27U2),使浏览器成为操作系统** 使用Chrome操作系统,网络 平台是本地平台。这种方法有几个优点: 创建操作系统要容易得多,因为所有的用户界面技术都已经存在。 很多开发人员(大多数)知道如何为操作系统编写应用程序。 管理应用程序很简单。这有助于公共设施,如网吧和学校。 的介绍 移动操作系统webOS(起源于Palm,现在由LG Electronics拥有)早于Chrome OS的推出,但是“与操作系统相似的浏览器”更为明显(这就是为什么被选为里程碑)。webOS越来越少。更少,因为它非常专注于手机和平板电脑。更多,因为它有内置的Node.js,让您实现JavaScript中的服务。网络操作系统类别中最近的一个条目是Mozilla的Firefox OS,它面向手机和平板电脑。Mozilla的wiki提到了Web操作系统的好处: > 我们还需要一座山,以扩大和集中我们的努力。最近我们看到了pdf.js项目(通过HTML5渲染PDF,不需要插件)暴露了需要填充的小差距,以将“HTML5”作为PDF的超集。我们现在想要迈出更大的一步,找到那些让网络开发者们无法开发应用程序的漏洞——这些应用程序在每一个方面都与为iPhone、Android和WP7构建的本地应用程序相当。 **2011年[Windows 8](https://support.microsoft.com/zh-cn/products/windows),一流的HTML5应用程序** 当微软推出Windows 8时,令操作系统广泛整合HTML5的人感到惊讶。HTML5应用程序是Windows 8中的一流公民,与通过.NET和C ++等现有技术实现的一样。为了表明这一点,微软在HTML5中编写了几个重要的Windows 8应用程序(包括本机API的调用),包括应用程序商店和电子邮件应用程序。 [7] Ajax是一个缩写,全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML)。 > [《JavaScript 20 年》](https://github.com/doodlewind/jshistory-cn)