Node.js只支持單線程,故不會產生死鎖,採用非阻塞I/O機制和事件環機制。很是適合與開發須要處理大量併發的輸入/輸出的應用程序。node
一. Node.js的核心模塊有不少,這裏先寫幾個比較經常使用的(目前我我的較經常使用的,不表明大衆):
1.buffer:用於實現二進制數據的存儲和轉換;
2.child-process:用於實現子進程的建立與管理;
3.console:用於控制檯輸出信息;
4.events:用於爲事件處理提供一個基礎類;
5.fs:用於操做文件及文件系統;
6.http:用於實現HTTP服務器端及客戶端;
7.https:用於實現HTTPS服務器端及客戶端;
8.path:用於處理文件路徑;
9.string_decoder:用於實現從二進制數據到字符串數據之間的轉換;
10.url:用於實現URL字符串的解析與格式化。
二.Node.js中有如下幾個追加的類、函數及對象能夠在不引用任何模塊的狀況下使用:
1.buffer類:用於爲二進制數據的存儲提供一個緩存區;
2.setTimeout函數:
3.clearTimeout函數:
4.setInterval函數:
5.clearInterval函數:
6.require對象:用於加載模塊;
7.module對象:用於訪問模塊信息;
8.process對象:用於訪問進程信息。
三.REPL
REPL是Node.js提供的一個交互式運行環境。在命令行窗口輸入「node」命令並按下回車便可進入REPL運行環境,REPL運行環境中的命令提示符默認爲「>」。
1.在REPL運行環境中,能夠經過下劃線「_」來訪問最近使用的表達式;
2.在REPL運行環境中的基礎命令:npm
四.Node.js中經常使用的方法及函數
1.console.dir:用於查看一個對象中的內容並將該對象的信息輸出到控制檯中;
2.console.time方法與console.timeEnd方法:統計一段代碼的執行時間。console.time用於標記開始時間,console.timeEnd用於標記結束時間。並將通過的毫秒數輸出到控制檯;使用方法:
console.time(label) console.timeEnd(label)
這兩個方法的參數必須相同,參數值能夠是任何字符串。
3.console.assert方法:用於對一個表達式的執行結果進行評估,若是該表達式的執行結果爲false。則輸出一個消息字符串,並拋出AssertError異常。
4.使用require.resolve函數查詢完整模塊名:(只作查詢,不加載)
用法,例: require.resolve("./test.js");
5.require.cache對象:該對象表明緩存了全部已被加載模塊的緩存區。能夠用「console.log(require.cache)」來查看。
五.Node.js中的包
一個包中一般包含如下內容:
1.包的根目錄中存放package.json文件;
2.在lib子目錄中存放Javascript文件;
3.在bim中存放二進制文件;
4.在doc中存放對包和包的只用方法的說明文件;
5.在test子目錄中存放一些測試用的文件。
package.json文件中包含的字段及做用:
name:包名,包名必須是惟一的,由小寫字母、數字、下劃線組成,不能有空格;
preferglobal:是否支持全局安裝,true爲支持,false爲不支持;
description:包說明;
version:版本號;
author:做者信息;
repository:倉庫託管地址數組;
dependencies:本包所依賴的包,是一個關聯數組,有包名和版本號組成;
npm包管理工具:
1. npm root -g //查看Node.js的全局包的安裝路徑
2. npmconfig set prefix 「d:\node」 //修改Node.js的全局包的安裝路徑到「d:\node\node_modules」;
3. npmlist //查看當前目錄下安裝的全部包,若要查看全局,加「-g」;
4.npm uninstall <包名> //卸載當前目錄下的某個包,若要卸載全局中的,在包名前加「-g」;
5. npm update <包名> //更新當前目錄下的某個包,若要卸載全局中的,在包名前加「-g」.json