[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章 接下來該做什么
- 著作權