[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)
- 本书简介
- 前言
- 关于这本书你需要知道些什么
- 如何阅读本书
- 目录
- I. JavaScript的快速入门
- 第1章 基础的JavaScript
- II. 背景知识
- 第2章 为什么选择JavaScript?
- 第3章 JavaScript的性质
- 第4章 JavaScript是如何创造出来的
- 第5章 标准化:ECMAScript
- 第6章 JavaScript的历史里程碑
- III. 深入JavaScript
- 第7章 JavaScript语法
- 第8章 值
- 第9章 运算符
- 第10章 布尔值
- 第11章 数字
- 第12章 字符串
- 第13章 语句
- 第14章 异常捕获
- 第15章 函数
- 第16章 变量:作用域、环境和闭包
- 第17章 对象和继承
- 第18章 数组
- 第19章 正则表达式
- 第20章 Date
- 第21章 Math
- 第22章 JSON
- 第23章 标准全局变量
- 第24章 编码和JavaScript
- 第25章 ECMAScript 5中的新功能
- IV. 技巧、工具和类库
- 第26章 元代码样式指南
- 第27章 调试的语言机制
- 第28章 子类化内置构造函数
- 第29章 JSDoc:生成API文档
- 第30章 类库
- 第31章 模块系统和包管理器
- 第32章 其他工具
- 第33章 接下来该做什么
- 著作权