程式人雜誌 -- 2015 年 1 月號 (開放公益出版品)

令人眼花撩亂的 javascript 新世界

如果您尚未學過 HTML/CSS/javascript 等語法的話,建議您可以先看看 『少年程式人雜誌』 2014年12月號的下列文章,再來看本期的內容,應該會比較順利。

在我所學過的語言當中,javascript 大概是被誤解最多的一個語言。像是 JavaScript 是 Java 語言的簡化版、JavaScript 語言很難用、JavaScript 語言設計很差勁、javascript 只能用來寫寫小程式等等。

然而,這些誤解其實是我們不瞭解 JavaScript 所造成的。如果您用心的理解 JavaScript,您會發現這是一個「簡單、輕巧又優美」的語言,其原型導向的設計方式,用很簡單的概念達成了物件導向語言的功能,真的很適合做為瀏覽器上的共通語言。

javascript 的歷史還算蠻悠久的,在1995年時就由瀏覽器始祖網景公司 (Netscape) 的布蘭登·艾克 (Brendan Eich) 所設計出來,企圖在瀏覽器中引入程式語言,讓網頁可以擁有更多的互動性。

原本 javascript 稱為 livescript,但網景公司為了和昇陽公司合作推動 java,結果將此以語言改名為 javascript,於是javascript常被誤解為java版本的script,但其實兩者的設計上並沒有太大關係。

不過瀏覽器確實需要一個程式語言,可惜當初昇陽公司主推java語言的applet技術在瀏覽器上表現不佳,瀏覽器內的動畫等領域反而被Macromedia 公司的flash 佔領,而java卻陰錯陽差的成了桌上應用與伺服端的重要語言,這段歷史讓javascript沈寂了一段時間。

但是自從 2009 年 node.js 推出以來,javascript 就開始進入一個『大爆發』時期,各式各樣的『框架、函式庫、套件、平台、應用』層出不窮,而 HTML5 的成熟化更進一步讓 javascript 進入了一個嶄新的時代,為 javascript 創造出了全新的可能性。

現在的javascript技術演進可以說是令人眼花撩亂,從前端的 jQuery、backbone.js、angular.js、react.js 等技術,到後端的 node.js、express.js 、connect.js、mongoose.js,以及橫跨兩端用來通訊的 websocket, ajax 技術與 socket.io 等套件,還有經常搭配 javascript 使用的 HTML5, CSS3 技術,以及 bootstrap 等顯示框架,這些技術的蓬勃發展讓 javascript 再度回春,成為具有強大生命力的一種語言。

除了瀏覽器前後端之外,javascript也開始入侵到一些本地應用與手機APP等領域,像是 Titanium, PhoneGap 可以讓您用javascript/html/css 等技術撰寫橫跨iOS、android、window phone 等平台的APP,而 微軟新一代的 windows App 也是依靠 HTML/CSS/javascript 這樣的技術體系所建立的,另外像 Intel 的王文睿也釋出了 Node-webkit 這種可以用 HTML/CSS/javascript 創建以瀏覽器為何心的視窗程式環境,而 Unity 這個跨平台的遊戲引擎也主要支援 javascript /c# 這兩種語言,這讓 javascript 成為可以用來創建「從命令列程式、網路程式、web程式、視窗程式到遊戲程式」這樣涵蓋度極為廣泛的一種語言,大大的增加了javascript這個語言的吸引力。

未來、javascript 還會被用在什麼領域呢?我們很難預測,因為也有人開始試圖將 javascript 用到嵌入式系統與設計作業系統上了,而 javascript 的語法標準 ECMAScript 6 又為 javascript 添加了包含正規物件導向、 mixin 模組、預設值參數、yield語法等等,讓那些抱怨javascript物件語法不正統、語法不夠強大的人們,也有機會用正規的物件導向方式與強大的語法來撰寫javascript了。

這些 javascript 的新發展,可是讓身為『程式控』的我,感到非常的激動與興奮呢!