一、Node.js首要目標是提供一種簡單的、用於建立高性能服務器及可在該服務器中運行的各類應用程序的開發工具。瀏覽器
二、Node.js修改了客戶端到服務器端的鏈接方法,解決了 服務器所支持的最大同時鏈接用戶量瓶頸的問題。由於它並不爲每一個客戶端建立一個新的線程,而是爲每一個客戶端鏈接觸發一個在Node.js內部進行處理的事件。所以,若是使用Node.js,能夠同時處理多達幾萬個用戶的客戶端鏈接。緩存
三、在Node.js服務器中,運行的是高性能的V8 JavaScript腳本語言,該語言是一種被V8 JavaScript引擎所解析並執行的腳本語言。該引擎並不侷限於在瀏覽器中運行,Node.js將其轉用在了服務器中。服務器
四、爲了實現高性能,Node.js採用了兩種機制:併發
- 非阻塞型/O機制:JavaScript只支持單線程。在處理一個事務過程當中,存在一段等待時間,在這段時間裏,它能夠當即處理事務後面的代碼,提升程序的執行效率
- 事件環機制:在Node.js中,一個時刻只能執行一個事件回調函數,可是在執行一個事件回調函數的中途能夠轉而處理其餘事件,而後返回繼續執行原事件回調函數
五、當應用程序須要處理大量併發的輸入/輸出,而在向客戶端發出響應以前,應用程序內部並不須要進行很是複雜的處理的時候,咱們應該考慮使用Node.js來進行該應用程序的開發。dom
六、在Node.js中是經過以模塊爲單位來劃分全部功能,每個模塊爲一個JS文件,每一個模式中定義的全局變量或函數的做用範圍也被限定在這個模塊之中,只有使用exports對象才能將其傳遞到外部。在引用模塊時,須要使用require函數。函數
//輸出
exports.print = function(){...}
//導入
var foo = require('./for.js')
console.log(foo.print()
七、Node.js中的核心模塊:工具
- assert:單元測試 添加的斷言處理
- buffer:實現二進制數據的存儲與轉換
- child_process:實現子進程的建立與管理
- cluster:實現多進程
- console:爲控制檯輸出信息
- crypto:實現數據的加密解密處理
- debugger:實現一個內置調試器來幫助開發者調式應用程序
- dns:實現與DNS相關的處理
- domain:實現多個I/O之間的協做處理
- events:爲事件處理提供一個基礎類
- fs:操做文件及文件系統
- http:實現HTTP服務器端及客戶端
- https:實現HTTPS服務器端及客戶端
- net:建立TCP服務器與客戶端
- os:獲取操做系統信息
- path:處理文件路徑
- punycode:實現Punycode字符串的編碼及解碼
- querystring:處理HTTP請求中使用的查詢字符串
- readline:讀取一行標準輸入流
- repl:實現REPL交互式運行環境
- stream:爲流的輸入/輸出處理提供一個基礎類
- string_decoder:實現從二進制數據到字符串數據之間的轉換
- tls:使用OpenSSL來實現TLS/SSL通訊處理
- tty:獲取來自於TTY終端的信息
- url:實現URL字符串的解析與格式化
- util:實現各類實用函數
- vm:爲JavaScript腳本代碼提供一個獨立的運行環境
- zlib:實現數據的壓縮及解壓處理
能夠直接使用require函數,並使用模塊名作爲參數,來引用這些模塊:性能
var http = require('http');
八、Node.js中追加的類、函數、對象單元測試
能夠在不引用任何模塊的狀況下直接使用這些類、函數、對象。開發工具
- Buffer類:爲二進制數據的存儲提供一個緩存區
- setTimeout函數:在指定時間到達時執行一個指定的函數
- clearTimeout函數:取消指定函數的執行
- setInterval函數:指定每隔多少時間執行一個指定的函數
- clearInterval函數:取消指定函數的執行
- require函數:加載模塊
- module對象:訪問模塊信息
- process對象:訪問進程信息