1. 程式人生 > >第一節:Node.js簡介

第一節:Node.js簡介

而是 php util i/o 加載 瀏覽器 tcp服務器 左右 數量

第一節:Node.js簡介

1.什麽是Node.js?

  Node.js是一個用於開發各種Web服務器的開發工具,仔Node.js服務器中,運行的高性能V8 JavaScript腳本語言,該語言是一種可以運行仔服務器端的JavaScript腳本語言。它為了提高性能,采用了以下兩種機制:非阻塞型I/O和事件環,由於采用了非阻塞型I/O,所以在執行了訪問數據庫的代碼後將立即轉而執行其後的代碼,把數據庫返回結果的處理代碼放在回掉函數中執行,從而提高了程序的執行效率,在Node.js中,在一個時刻只能執行一個事件回掉函數,但是在執行一個事件回掉函數的中途可以轉而處理其他事件(包括新事件的觸發、聲明、回掉),然後返回繼續執行原事件回掉函數,這種處理機制稱為事件環機制。

2.為什麽需要Node.js?

  在Java、PHP、ASP.NET等服務器端語言中,為每一個客戶端連接創建一個新的線程,每個線程需要消耗大約2MB的內存,例如8GB內存的服務器可以同時連接的最大用戶數為4000個左右,如果要讓web程序支持更多的用戶,就需要增加服務器的數量,那麽硬件成本也會隨之增加,不僅如此,在技術上也會潛在一些問題。所以在一個web應用程序中,一個主要的瓶頸是服務器所支持的最大同時連接用戶量。而Node.js正好解決了這個問題,它修改了客戶端到服務器的連接方式,它並不是為每個客戶端連接創建一個新的線程,而是為每個客戶端連接觸發一個Node.js內部進行處理的事件。

  所以說當應用程序需要處理大量並發的輸入/輸出,而在向客戶端發出響應之前,應用程序內部並不需要星星非常復雜的處理的時候,可以選擇Node.js,比如,聊天服務器、綜合服務類網站或電子商務網站的服務器等一些在同一時刻接收到多達上千條數據並且需要存入數據庫中,Node.js通過隊列機制將這些數據迅速書寫在緩存區中。

3.怎樣使用Node.js?這是我們接下來要用一段時間來研究的問題

  Node.js官網地址為http://nodejs.org,下載Nodejs。

接下來我們來了解下Node.js中的模塊:

  學過前端的同學都知道在客戶端可以將所有的JavaScript代碼分割為幾個JS文件,然後在瀏覽器中將這些JS文件合並運行。但是在javaScript中是通過模塊為單位來劃分所有功能的。每一個模塊為一個JS文件,每一個模塊中定義的全局變量或函數的作用範圍都會被限定仔這個模塊中,只有使用exports對象才能將其傳遞到外部。如:exports.printHi=function(){return "hi"} 那怎麽在另一個js文件中訪問呢? 可以參考以下代碼: var hi=require(‘./Hi.js‘); //加載Hi.js模塊

                                                                        console.log(hi.printHi()); //訪問Hi.js模塊內的函數printHi

常用的核心模塊有:assert 為應用程序的單元測試添加斷言處理

         buffer 用於實現二進制數據的存儲與轉換

         debugger 用於實現一個內置調試器來幫助開發者調試應用程序

         dns 用於現實與DNS相關的處理

         events 用於為時間處理提供的一個基礎類

         fs 用於操作文件及文件系統

         http 用於實現HTTP服務器及客戶端

         https 用於實現HTTPS服務器及客戶端

         net 創建TCP服務器和客戶端

         os 獲取操作系統信息

         path 處理文件路徑

         querystring 處理HTTP請求中使用的查詢字符串

         util 實現各種實用函數

         zlib 內部使用zlib類庫來實現數據的壓縮及解壓處理

         url 實現URL字符串的解析與格式化

         string_decoder 用於實現從二進制數據到字符串數據之間的轉換

在Node.js中可以直接使用require函數並將模塊名設置為require函數的參數值的方法來引用這些模塊,例如:var http=require(‘http‘);

第一節:Node.js簡介