nodeJs只是聽說過,沒見過,沒玩過。從新手開始,我想慢慢掌握它。
一、首先,我想知道nodeJs是什么?
摘自百度百科:
Node.js是一套用來編寫高性能網絡服務器的JavaScript工具包,一系列的變化由此開始。比較獨特的是,Node.js會假設在POSIX環境下運行Linux 或 Mac OS X。
如果是在Windows下,那就需要安裝MinGW以獲得一個仿POSIX的環境。在Node中,Http是首要的。Node為創建http服務器作了優化,所以在網上看到的大部分示例和
庫都是集中在web上(http框架、模板庫等)。
點:
1. 用於服務器端;
2. 是一套javascript工具包;
3. 和http關系密切。
Node.js是一個可以快速構建網絡服務及應用的平台。該平台的構建是基於Chrome's JavaScript runtime,也就是說,實際上它是對GoogleV8引擎(應用於
Google Chrome瀏覽器)進行了封裝。V8引擎執行Javascript的速度非常快,性能非常好。Node對一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境
下運行得更好。例如,在服務器環境中,處理二進制數據通常是必不可少的,但Javascript對此支持不足,因此,V8.Node增加了Buffer類,方便並且高效地 處理二進
制數據。因此,Node不僅僅簡單的使用了V8,還對其進行了優化,使其在各環境下更加給力。
點:
1. 是一個平台,可快速構建網絡服務及應用;
2. 封裝谷歌v8引擎。
結:
Node.js 是服務器端的 JavaScript 運行環境,它具有無阻塞(non-blocking)和事件驅動(event-driven)等的特色,Node.js 采用 V8 引擎,同樣,Node.js
實現了類似 Apache 和 nginx 的web服務,讓你可以通過它來搭建基於 JavaScript 的 Web App。除此之外,nodejs還有很多有用的模塊,可簡化開發,比如向終端輸出字符串。
nodeJs到底是啥?它不是js應用,而是服務器端js運行平台,即一個javascript的運行環境和庫。可以編寫系統級或者服務器端的Javascript代碼,交給 Node.js來解釋執行。就像html遇到php會由php解釋器解釋,jsp由jvm解釋執行一樣。
二、再者,它有哪些特性呢?
nodejs作為一個新興的后台,有很多吸引人的地方:
RESTful API
單線程
Node.js可以在不新增額外線程的情況下,依然可以對任務進行並行處理 —— Node.js是單線程的。
它通過事件輪詢(event loop)來實現並行操作,對此,我們應該要充分利用這一點 —— 盡可能的避免阻塞操作,取而代之,多使用非阻塞操作。
非阻塞IO V8虛擬機 事件驅動
解釋如下:
事件驅動,在傳統語言的網絡編程中,我們會用到回調函數,比如當條件滿足或是某事件發生時,注冊的回調函數就會執行。Node.js的設計思
想中以事件驅動為核心,它提供的絕大多數API都是基於事件的、異步的風格。以Net模塊為例,其中的net.Socket對象就有以下事件:connect
data、end、timeout、drain、error、close等,使用Node.js的開發人員需要根據自己的業務邏輯注冊相應的回調函數。這些回調函數都是
異步執行的,這意味着雖然在代碼結構中,這些函數看似是依次注冊的,但是它們並不依賴於自身出現的順序,而是等待相應的事件觸發。事件驅動
異步編程的設計,重要的優勢在於,充分利用了系統資源,執行代碼無須阻塞等待某種操作完成,有限的資源可以用於其他的任務。此類設計非常適
合於后端的網絡服務編程,Node.js的目標也在於此。在服務器開發中,並發的請求處理是個大問題,阻塞式的函數會導致資源浪費和時間延遲。通
過事件注冊、異步函數,開發人 員可以提高資源的利用率,性能也會改善。
三、具體可以干啥?
服務器端javascript應用,web應用等。
四、nodeJs環境搭建
windows下簡單安裝搭建可參考我的博文,其他系統安裝可參看這里。
五、一個小實例
1 var http = require('http'); 2 server = http.createServer(function (req, res) { 3 res.writeHeader(200, {"Content-Type": "text/plain"}); 4 res.end("Hello oschina\n"); 5 }) 6 server.listen(8000); 7 console.log("httpd start @8000");
確保nodejs環境安裝成功,對以上文件編譯執行通過,在瀏覽器地址欄輸入localhost:8000,可以看到輸出。
以上資料來自互聯網,參考文檔如下:
1. 百度百科
2. http://www.infoq.com/cn/articles/what-is-nodejs
3. http://limu.iteye.com/blog/1013223
推薦幾本nodejs書籍(csdn可下載):
1. nodejs小書
2. nodejs開發指南
3. node web開發