1. 程式人生 > >Node.js概述

Node.js概述

var 信息 格式化 輸出 實用 tab 安裝第三方 單位 wid

1.Node.js能夠解決什麽問題?

Node.js不為每個客戶端連接創建一個新的線程,而是為每個客戶端連接觸發一個在Node.js內部進行處理的事件。因此,能夠解決高並發訪問的效率問題。

【析】在Java/PHP等服務器端語言中,為每個客戶端請求創建一個線程,每個線程耗費月2M,8G內存最大並發4000個,而Node.js可同時處理多達幾萬個客戶端的連接。因此,當需要使用Web應用程序能夠支持大量用戶的並發連接的時候,應該考慮使用Node.js。

2.使Node.js具備高性能的兩種機制:非阻塞型I/O和事件環。

非阻塞型I/O:傳統單線程訪問數據庫時整個線程停下來等待結果返回,而Node.js執行了訪問數據庫的代碼後立即轉而執行後面的代碼,把返回結果的處理代碼放在回調函數中執行,從而提高了程序執行效率。

事件環:一個時刻只能執行一個事件回調函數,但在中途可以轉而處理其他事件,包括出發新事件,生命該事件的回調函數等,然後返回繼續執行原事件的回調函數。

3.Node.js適合開發的應用程序:

聊天服務器:高並發連接,低復雜處理;

綜合服務類網站或電商網站:每秒接收大量數據並將其寫入緩存區,再通過單獨處理從緩存區取出並寫入數據庫。

4.Node.js中的模塊:

Node.js中以模塊為單位進行功能劃分,每個模塊一個js文件。每個模塊中定義的全局變量或函數的作用範圍也被限定在這個模塊之內,只有使用exports對象才能將其傳遞到外部。

exports.printFoo = function
{ return "Foo"; }; var foo = require(‘./foo.js‘);
foo.printFoo(); //調用模塊中方法

【理解】exports類似於Java中的關鍵字public,在定義變量或函數的時候,只有通過它修飾,才能被外部調用。

Node.js中部分核心模塊
assert 單元測試斷言處理
buffer   用於二進制數據的處理與轉換
console  用於控制臺輸出信息
fs  用於操作文件及文件系統
http 用於實現http服務器及客戶端
https 用於創建https服務器及客戶端
net 用於創建TCP服務器及客戶端
os  用於獲取操作系統信息
path 用於處理文件路徑
readLine 用於讀取一行標準輸入流

url

用於實現url字符串的解析與格式化
util 用於實現各種實用函數
zlib   內部實用zlib類庫來實現數據的壓縮及解壓處理

可直接使用的類、對象、函數
Buffer類 用於為二進制數據的存儲提供緩存區
setTimeOut() 用於在指定時間到達時執行指定函數(毫秒)
clearTimeOut() 取消setTimeOut()執行
setInterval() 每個多少毫秒執行一次指定函數
clearInterval() 取消setInterval()執行
require() 用於加載模塊
module對象 用於訪問模塊信息
process對象  用於訪問進程信息

【註】還可以安裝第三方模塊進行功能擴展,如模板引擎、數據庫訪問等。

Node.js概述