什麼是Node.js
Node是一個Javascript運行環境(runtime)。實際上它是對GoogleV8引擎(應用於Google Chrome浏覽器)進行了封裝。V8引 擎執行Javascript的速度非常快,性能非常好。Node對一些特殊用例進行了優化,提供了替代的API,使得V8在非浏覽器環境下運行得更好。例 如,在服務器環境中,處理二進制數據通常是必不可少的,但Javascript對此支持不足,因此,V8.Node增加了Buffer類,方便並且高效地 處理二進制數據。因此,Node不僅僅簡單的使用了V8,還對其進行了優化,使其在各環境下更加給力。
發展歷史
2009年2月,Ryan Dahl在博客上宣布准備基於V8創建一個輕量級的Web服務器並提供一套庫。
2009年5月,Ryan Dahl在GitHub上發布了最初版本的部分Node.js包,隨後幾個月裡,有人開始使用Node.js開發應用。
2009年11月和2010年4月,兩屆JSConf大會都安排了Node.js的講座。
2010年年底,Node.js獲得雲計算服務商Joyent資助,創始人Ryan Dahl加入Joyent全職負責Node.js的發展。
2011年7月,Node.js在微軟的支持下發布Windows版本。
初識Node.js
要開始使用Node.js的,必須先了解Node.js和傳統的服務器端腳本環境(如:PHP,Python和Ruby的,等等)之間的差異。
相信大部分讀者都已經對ajax編程十分熟悉了,其中ajax中的a(asynchronous)指的是異步編成,所以在node.js世界中,一切的方法都是異步執行的,因此比如你需要程序中閱讀一個操作系統中的文件,則必須指定一個回調方法,則在讀取完這個文件後,則會執行這個回調方法的內容。
下面,就Node.js跟其他語言來做個小的對比,讀者可以可以看出其中的端倪。因為Node.js不是服務器運行環境,它實際上是在服務端運行的javascript,因此在性能上是十分高效的。下面是Node.js編寫的一個小程序代碼:
var i, a, b, c, max;下面的表是兩者對比的性能列表,以微秒為單位,如下:
在命令行執行這兩個應用程序,所以沒有服務器端的延遲執行。對每個應用分別測試10次,取平均值,結果。如果循環的次數比較少,則php的速度快點,但這種優勢,隨著迭代次數的增加而減少,會發現都比nodejs慢了!
可以看到Node.js速度是很快,但必須正確地使用它。下面介紹Node.js中幾個重要的概念:
Modules模塊
Node.js使用Module模塊去劃分不同的功能,以簡化應用的開發。Modules模塊有點象C語言中的類庫。每一個Node.js的類庫都包含了十分豐富的各類函數,比如http模塊就包含了和http功能相關的很多函數,可以幫助開發者很容易地對比如http,tcp/udp等進行操作,還可以很容易的創建http和tcp/udp的服務器。
要在程序中使用模塊是十分方便的,只需要如下:
在這裡,引入了http類庫,並且對http類庫的引用存放在http變量中了。這個時候,node.js會在我們應用中搜索是否存在node_modules的目錄,並且搜索這個目錄中是否存在http的模塊。如果node.js找不到這個目錄,則會到全局模塊緩存中去尋找,用戶可以通過相對或者絕對路徑,制定模塊的位置,比如:
var myModule = require('./myModule.js');
模塊中包含了很多功能代碼片斷,在模塊中的代碼大部分都是私有的,意思是在模塊中定義的函數方法和變量,都只能在同一個模塊中被調用。當然,可以將某些方法和變量暴露到模塊外,這個時候可以使用export是對象去實現,比如如下代碼:
var PI = Math.PI;上面的代碼中,創建了PI這個變量,這個變量只能在同一個模塊中被訪問,並且用exports分別將兩個方法area和circumference對外暴露出去了,因此在其他模塊中可以訪問。
盡量避免使用全局變量
Node.js是使用Google的V8 JavaScript引擎。因此,我們應該遵循的最��實踐去進行客戶端的開發。比如,我們應該盡量避免將所有東西都放在全局變量中。然而,這並不總是可能的。在node.js中,要聲明全局變量的話,甚至可以省略var關鍵字,這樣你可以很容易地創建一個全局變量的函數,比如:
globalVariable = 1;
globalFunction = function () { ... };
但是盡可能的話,還是應該少在Node.js中到處使用全局變量。
Node.js的安裝
下面介紹下Node.js的安裝,首先在nodejs.org的網站上根據操作系統下載相關的安裝包,對於linux下的安裝,可以如下進行:
sudo apt-get update
sudo apt-get install node
或者:
sudo aptitude update
sudo aptitude install node
Node.js就會在sid庫,現在可以將它們增加到sources來源列表中
sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list
但要注意的是,在完成安裝後,需要移走/etc/apt/sources.list.d/sid.list。
更多關於Node.js的詳細信息,或者下載地址請點這裡