node.js
Node是一個Javascript運行環境(runtime)。實際上它是對Google V8引擎(應用於Google Chrome瀏覽器)進行了封裝。V8引 擎執行Javascript的速度非常快,效能非常好。Node對一些特殊用例進行了最佳化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好。例 如,在伺服器環境中,處理位元據通常是必不可少的,但Javascript對此支援不足,因此,V8.Node增加了Buffer類,方便並且高效地 處理位元據。因此,Node不僅僅簡單的使用了V8,還對其進行了最佳化,使其在各環境下更加給力。
V8引擎本身使用了一些最新的編譯技術。這使得用Javascript這類進階語言編寫出來的代碼與用C這類低 級語言寫出來的代碼效能相差無幾,卻節省了開發成本。對效能的苛求是Node的一個關鍵因素。 Javascript是一個事件驅動語言,Node利用了這個優點,編寫出可擴充性高的伺服器。Node採用了一個稱為“事件迴圈(event loop)”的架構,使得編寫可擴充性高的伺服器變得既容易又安全。提高伺服器效能的技巧有多種多樣。Node選擇了一種既能提高效能,又能減低開發複雜 度的架構。這是一個非常重要的特性。並發編程通常很複雜且布滿地雷。Node繞過了這些,但仍提供很好的效能。
Node採用一系列“非阻塞”庫來支援事件迴圈的方式。本質上就是為檔案系統、資料庫之類的資源提供介面。當 你向檔案系統發送一個請求時,無需等待硬碟(定址並檢索檔案),硬碟準備好的時候非阻塞介面會通知Node。該模型以可擴充的方式簡化了對慢資源的訪問, 直觀,易懂。尤其是對於熟悉onmouseover、onclick等DOM事件的使用者,更有一種似曾相識的感覺。
雖然讓Javascript運行於伺服器端不是Node的獨特之處,但卻是其一強大功能。不得不承認,瀏覽器環境限制了我們選擇程式設計語言的自由。任 何伺服器與日益複雜的瀏覽器用戶端應用程式間共用代碼的願望只能通過Javascript來實現。雖然還存在其他一些支援Javascript在伺服器端 啟動並執行平台,但因為上述特性,Node發展迅猛,成為事實上的平台。
在Node啟動的很短時間內,社區就已經貢獻了大量的擴充庫(模組)。其中很多是串連資料庫或是其他軟體的驅動,但還有很多是憑他們的實力製作出來的非常有用的軟體。
最後,不得不提到的是Node社區。雖然Node項目還非常年經,但很少看到對一個項目如此狂熱的社區。不管是新手,還是專家,大家都圍繞著項目,使用並貢獻自已的能力,致力於打造一個探索、支援、分享、聽取建議的樂土。