第 6 章。JavaScript 歷史里程碑
目錄
購買書籍
(廣告,請勿封鎖。)

第 6 章。JavaScript 歷史里程碑

JavaScript 花了很長一段時間才產生影響。許多與 JavaScript 相關的技術存在了一段時間,直到它們被主流發現。本節說明了從 JavaScript 創建至今發生的事情。在整個過程中,只提到了最受歡迎的專案,而忽略了許多專案,即使它們是第一個。例如,Dojo Toolkit 已列出,但也有鮮為人知的 qooxdoo,它是在大約同一時間創建的。而且 Node.js 已列出,儘管 Jaxer 在它之前就存在

1997 年 — 動態 HTML
動態 HTML允許您動態地變更網頁的內容和外觀。您可以透過操作頁面的文件物件模型 (DOM)(一種樹狀資料結構)來達成此目的。您可以執行的動作包括變更內容、變更樣式以及顯示和隱藏元素。動態 HTML 最早出現在 Internet Explorer 4 和 Netscape Navigator 4 中。
1999 年 — XMLHttpRequest
此 API 讓客戶端腳本可以向伺服器發送 HTTP 或 HTTPS 要求,並取得資料,通常以文字格式(XML、HTML、JSON)呈現。它是在 Internet Explorer 5 中引入的。
2001 年 — JSON,一種基於 JavaScript 的資料交換格式

2001 年,Douglas Crockford 命名並記錄了 JSON(JavaScript 物件表示法),其主要概念是使用 JavaScript 語法以文字格式儲存資料。JSON 使用 JavaScript 文字來表示物件、陣列、字串、數字和布林值,以表示結構化資料。例如:

{
    "first": "Jane",
    "last": "Porter",
    "married": true,
    "born": 1890,
    "friends": [ "Tarzan", "Cheeta" ]
}

多年來,JSON 已成為 XML 的熱門輕量級替代方案,特別是在要表示結構化資料而不是標記時。當然,JSON 很容易透過 JavaScript 使用(請參閱 第 22 章)。

2004 年 — Dojo Toolkit,一個用於大規模編寫 JavaScript 的架構
Dojo Toolkit 透過提供必要的基礎架構來促進大規模編寫程式:一個繼承函式庫、一個模組系統、一個用於桌面式圖形小工具的 API,以及更多。
2005 年 — Ajax,基於瀏覽器的桌面級應用程式

Ajax是一組技術,為網頁帶來與桌面應用程式相媲美的互動性。2005 年 2 月推出了一個令人印象深刻的範例,說明了透過 Ajax 可以達成什麼:Google 地圖。此應用程式允許您平移和縮放世界地圖,但只有目前可見的內容才會下載到瀏覽器。在 Google 地圖推出後,Jesse James Garrett 發現它與其他互動式網站共享某些特質。他將這些特質稱為 Ajax,是 非同步 JavaScript 和 XML 的簡稱。[7] Ajax 的兩個基石是在背景中非同步載入內容(透過 XMLHttpRequest)並使用結果動態更新目前的頁面(透過動態 HTML)。這是一個顯著的可用性改善,因為它總是執行完整的頁面重新載入。

Ajax 標誌著 JavaScript 和動態網路應用程式的主流突破。有趣的是,這花了多長時間,那時 Ajax 的成分已經存在多年。自 Ajax 誕生以來,其他資料格式已變得流行(JSON 取代 XML),其他協定已使用(例如,除了 HTTP 之外的 Web Sockets),並且雙向通訊是可能的。但基本技術仍然相同。然而,術語 Ajax 在現今已少用,並且大多已被更全面的術語 HTML5Web Platform(兩者都表示 JavaScript 加上瀏覽器 API)所取代。

2005 年—Apache CouchDB,一個以 JavaScript 為中心的資料庫
粗略來說,CouchDB 是 JSON 資料庫:您提供 JSON 物件給它,而無需事先指定架構。此外,您可以透過執行 map/reduce 作業的 JavaScript 函數來定義檢視和索引。因此,CouchDB 非常適合 JavaScript,因為您可以直接使用原生資料。與關聯式資料庫相比,沒有與映射相關的阻抗失配。與物件資料庫相比,您可以避免許多複雜性,因為只儲存資料,而不是行為。CouchDB 只是幾個類似的 NoSQL 資料庫 之一。它們大多數都支援極佳的 JavaScript。
2006 年—jQuery,協助 DOM 操作
瀏覽器的 DOM 是客戶端網路開發中最痛苦的部分之一。jQuery 透過抽象瀏覽器差異,並提供用於查詢和修改 DOM 的強大流暢式 API,讓 DOM 操作變得有趣。
2007 年—WebKit,將行動網路推向主流
WebKit 是基於 KDE 的先前工作, 是 Apple 在 2003 年推出的 HTML 引擎。它在 2005 年開放原始碼。隨著 2007 年 iPhone 的推出,行動網路突然成為主流,與非行動網路相比幾乎沒有限制。
2008 年—V8,證明 JavaScript 可以很快
當 Google 推出其 Chrome 網路瀏覽器時,其亮點之一是稱為 V8 的快速 JavaScript 引擎。它改變了 JavaScript 速度慢的觀念,並導致與其他瀏覽器供應商展開速度競賽,而我們至今仍從中獲利。V8 是開放原始碼,並且可以在您需要廣為人知的快速嵌入式語言時,當作獨立元件使用。
2009—Node.js,在伺服器上實作 JavaScript

Node.js 讓您可以實作在負載下效能良好的伺服器。為此,它使用事件驅動、非封鎖 I/O 和 JavaScript(透過 V8)。Node.js 建立者 Ryan Dahl 提及選擇 JavaScript 的原因如下:

  • 「因為它很精簡,而且沒有附帶 I/O API。」[因此 Node.js 可以引入自己的非封鎖 API。]
  • 「網頁開發人員已經在使用它了。」[JavaScript 是一種廣為人知的語言,特別是在網頁環境中。]
  • 「DOM API 是基於事件的。每個人都已經習慣在沒有執行緒和事件迴圈的情況下執行。」[開發人員習慣非同步編碼風格。]

Dahl 能夠建立在事件驅動伺服器和伺服器端 JavaScript(主要是CommonJS 專案)的先前工作上。

Node.js 對 JavaScript 程式設計師的吸引力不只在於能夠使用熟悉的語言;您可以在用戶端和伺服器上使用相同的語言。這表示您可以共用更多程式碼(例如,用於驗證資料)並使用同構 JavaScript等技術。同構 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 OS,讓瀏覽器成為作業系統

使用 Chrome OS,網路平台就是原生平台。這種做法有幾個優點:

  • 建立作業系統容易多了,因為所有使用者介面技術都已經具備。
  • 許多開發人員已經(大部分)知道如何為作業系統撰寫應用程式。
  • 管理應用程式很簡單。這有助於網咖和學校等公共設施的安裝。

推出行動作業系統 webOS(起源於 Palm,現在由 LG 電子所有)早於推出 Chrome OS,但「瀏覽器作為作業系統」的想法在後者中更為明顯(這就是為什麼它被選為里程碑)。webOS 同時更少也更多。更少,因為它非常專注於手機和平板電腦。更多,因為它內建 Node.js,讓您可以在 JavaScript 中實作服務。網路作業系統類別中較新的項目是 Mozilla 的 Firefox OS,它鎖定手機和平板電腦。Mozilla 的 wiki提到網路作業系統對網路的一項好處

我們也需要一個目標,以便界定和集中我們的努力。最近,我們看到 pdf.js 專案 [透過 HTML5 呈現 PDF,不使用外掛程式] 揭露了需要填補的小差距,才能讓「HTML5」成為 PDF 的超集。我們現在想要邁出更大一步,找出讓網路開發人員無法建立應用程式的差距,這些應用程式在各方面都等同於為 iPhone、Android 和 WP7 建立的原生應用程式。

2011—Windows 8,一流的 HTML5 應用程式
當 Microsoft 推出 Windows 8 時,它以作業系統廣泛整合 HTML5 讓所有人感到驚訝。 HTML5 應用程式在 Windows 8 中是一流的公民,與透過現有技術(例如 .NET 和 C++)實作的應用程式並駕齊驅。為了證明這一點,Microsoft 在 HTML5 中撰寫了幾個重要的 Windows 8 應用程式(加上對原生 API 的呼叫),包括應用程式商店和電子郵件應用程式。


[7] Ajax 是簡稱,但不是縮寫,這就是為什麼它沒有寫成 AJAX 的原因。

下一頁:三、深入探討 JavaScript