Isomorphic 與 UniversalJS

一切要從網站開發說起,網站開發的技術可以分為前端與後端,分別指的是執行在 client 或是 server 上。早期前後端的技術是壁野分明的,前端開發者主要技術是 HTML/CSS/JavaScript,後端開發者則有許多不同的選擇像是:PHP、Python、Ruby 等等。

直到 Node.js 出現,Node.js 能夠後端伺服器上使用 JavaScript 開發。Node.js 的原理是使用了 Google 的 V8 虛擬機(Google的Chrome瀏覽器使用的JavaScript執行環境),在後端上執行。這個時期也將 JavaScript 賦予了一個特別的使命!

從早期的 JavaScript 用於前端,到後來的 Node.js 可在後端執行,現在甚至連行動裝置、嵌入式系統中都可以看到 JavaScript 的蹤跡。因此,許多人也尋求一個形容詞來描述這種廣泛應用 JavaScript ,因為「JavaScript」一詞並不足以形容它的遼闊。

Charlie Robbins(@indexzero) 提出「Isomorphic JavaScript」 用來表示 JavaScript code 可以執行在 Server 及 Client 。但仔細去解釋 Isomorphic(同構) 的意義:「如果兩個結構是同構的,那麼其上的對象會有相似的屬性和操作,對某個結構成立的命題在另一個結構上也就成立。」簡單來說,同構的意思指的是兩個實體是不相同的,但具有相似的操作行為。這樣的意義顯然與 Charlie Robbins 的初衷不同,想表達的是同一種語言,能夠執行於不同的環境上。Isomorphic JavaScript 容易讓人產生意義上的模糊。

然而在技術上,一個直觀的名字是很重要的!一個好的命名,能夠幫助開發者在理解上更快速也更輕易。

因此, Thriller(@mjackson) 提出了使用 「Universal JavaScript」 作為新的命名。 Universal 指的是「普遍的,一般的,通用的」,這個命名能夠更直觀的來描述 JavaScript 的廣泛性。Universal JavaScript 的意涵是 JavaScript 不只能夠使用在 Client 上,也能夠在各式各樣的環境上運行。

Thriller(@mjackson)

UniversalJS

簡單來說,UniversalJS 的核心宗旨就是希望用 JavaScript 進行網站全端開發,讓前端與後端使用同一份程式碼!

UniversalJS

Reference

[1] Universal JavaScript
[2] Defining Isomorphic Javascript
[3] Isomorphic JavaScript Applications — the Future of the Web?


License


本著作由 Chang, Wei-Yaun (v123582) 製作,
創用CC 姓名標示-相同方式分享 3.0 Unported授權條款釋出。