爲什麼要學習Node.js

一、簡介

簡單的說Node.js就是運行在服務器端的JavaScript.
Node.js是一個基於Chrome JavaScript運行時建立的一個平臺。
Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的v8引擎,v8引擎執行JavaScript的速度非常快,性能非常好。

二、既然不是Javascript應用,爲何叫.js呢?
Node.js是一個Javascript的運行環境。提到Javascript,大家首先想到的是日常使用的瀏覽器,現代瀏覽器包含了各種組件,包括渲染引擎、Javascript引擎等,其中Javascript引擎負責解釋執行網頁中的Javascript代碼。作爲Web前端最重要的語言之一,Javascript一直是前端工程師的專利。不過,Node.js是一個後端的Javascript運行環境(支持的系統包括*nux、Windows),這意味着你可以編寫系統級或者服務器端的Javascript代碼,交給Node.js來解釋執行,簡單的命令類似於:

#node helloworld.js

Node.js採用了Google Chrome瀏覽器的V8引擎,性能很好,同時還提供了很多系統級的API,如文件操作、網絡編程等。瀏覽器端的Javascript代碼在運行時會受到各種安全性的限制,對客戶系統的操作有限。相比之下,Node.js則是一個全面的後臺運行時,爲Javascript提供了其他語言能夠實現的許多功能。

 

三、Node.js採用事件驅動、異步編程,爲網絡服務而設計
在某些傳統語言的網絡編程中,我們會用到回調函數,比如當socket資源達到某種狀態時,註冊的回調函數就會執行。
Node.js的設計思想中以事件驅動爲核心,它提供的絕大多數API都是基於事件的、異步的風格。以Net模塊爲例,其中的net.Socket對象就有以下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的開發人員需要根據自己的業務邏輯註冊相應的回調函數。這些回調函數都是異步執行的,這意味着雖然在代碼結構中,這些函數看似是依次註冊的,但是它們並不依賴於自身出現的順序,而是等待相應的事件觸發。
重要的優勢在於,充分利用了系統資源,執行代碼無須阻塞等待某種操作完成,有限的資源可以用於其他的任務。此類設計非常適合於後端的網絡服務編程,Node.js的目標也在於此。在服務器開發中,併發的請求處理是個大問題,阻塞式的函數會導致資源浪費和時間延遲。通過事件註冊、異步函數,開發人員可以提高資源的利用率,性能也會改善。
從Node.js提供的支持模塊中,我們可以看到包括文件操作在內的許多函數都是異步執行的,這和傳統語言存在區別,而且爲了方便服務器開發,Node.js的網絡模塊特別多,包括HTTP、DNS、NET、UDP、HTTPS、TLS等,開發人員可以在此基礎上快速構建Web服務器。以簡單的helloworld.js爲例:

var http = require('http');

http.createServer(function (req, res) {

    res.writeHead(200, {'Content-Type': 'text/plain'});

    res.end('Hello World\n');

}).listen(80, "127.0.0.1");

    上面的代碼搭建了一個簡單的http服務器,在本地監聽80端口,對於任意的http請求,服務器都返回一       個頭部狀態碼爲200、Content-Type'值爲text/plain'的”Hello World“文字響應。從這個小例子            中,    我們可以看出幾點:
    Node.js的網絡編程比較便利,提供的模塊(在這裏是http)開放了容易上手的API接口,短短几行代        碼就可以構建服務器。
    體現了事件驅動、異步編程,在createServer函數的參數中指定了一個回調函數(採用Javascript的匿        名函數實現),當有http請求發送過來時,Node.js就會調用該回調函數來處理請求並響應。當然,這        個例子相對簡單,沒有太多的事件註冊,在以後的文章中讀者會看到更多的實際例子。

    四、Node.js的特點
    1、事件驅動、異步編程。
    2、性能讓人信服。
    3、支持的編程語言Javascript。

    五、Node.js與java都是服務器語言,兩者的區別:
    (1)、Node.js比java更快:node.js開發快,運行的效率也算比較高,但是如果項目大了就容易亂,        而且javascript不是靜態類型語言,要到運行時才知道類型錯誤,所以寫的多了之後免不了會出現知道        有錯但找不到那出錯的情況,所以測試就得寫的更好更詳細。
    Java開發慢,但是如果項目大,複雜的話,用java就不容易亂,管理起來比node.js省。
    (2)、Node.js前後端都採用Javascript,代表未來發展的趨勢,而java則是現在最流行的服務器端        編程語言。
    (3)、Node.js是解釋語言,JavaEE是編程語言。

    如果你是一個前端程序員,你不懂得像PHP、Python或Ruby等動態編程語言,然後你想創建自己的        服務,那麼Node.js是一個非常好的選擇。Node.js 是運行在服務端的 JavaScript,如果你熟悉                Javascript,那麼你將會很容易的學會Node.js。當然,如果你是後端程序員,想部署一些高性能的            服務,那麼學習Node.js也是一個非常好的選擇。

    當今時代,技術每天都在更新,我們也不能停止自己前進的步伐。有興趣的夥伴們趕緊行動起來吧!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章