歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

前端頁面開發之Node.js初學者指南

目前,Node.js是在前端頁面開發中十分受歡迎的,它是一套用來編寫高性能網絡服務器的JavaScript工具包,在本文中,將帶領各位初學者介紹Node JS的基本知識,要求本文的閱讀對象為有一定Javascript和其他開發語言基礎的讀者。

  什麼是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;
max = 1000000000;
var d = Date.now();
for (i = 0; i < max; i++) {
    a = 1234 + 5678 + i;
    b = 1234 * 5678 + i;
    c = 1234 / 2 + i;
}
 而相同的PHP代碼如下:
$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;
$start = microtime(true);
for ($i = 0; $i < $max; $i++) {
$a = 1234 + 5678 + $i;
$b = 1234 * 5678 + $i;
$c = 1234 / 2 + $i;
}
var_dump(microtime(true) - $start);

  下面的表是兩者對比的性能列表,以微秒為單位,如下:

  在命令行執行這兩個應用程序,所以沒有服務器端的延遲執行。對每個應用分別測試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;
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};

  上面的代碼中,創建了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的詳細信息,或者下載地址請點這裡 

Copyright © Linux教程網 All Rights Reserved