Node.js基礎(chǔ)知識(轉(zhuǎn)載)

深入學(xué)習(xí)Node之前,需要先知道Node這個框架的基本知識。

控制臺

console對象:Node中使用該對象表示控制臺,通過console對象各種方法來向控制臺進(jìn)行標(biāo)準(zhǔn)輸出流,標(biāo)準(zhǔn)錯誤輸出流。

API

?console.log(): 進(jìn)行標(biāo)準(zhǔn)輸出流的輸出(stdout)

console.log('hello node');//hello node
console.log('%s',"js","node"); // 'js' 'node'
console.log('%s','people',{name:'kb',age:20}); //people { name: 'kb', age: 20 }
console.log('%d',1,2,3); //1 2 3
console.log('%%',10);//% 10

?console.error(): 進(jìn)行標(biāo)準(zhǔn)錯誤流的輸出用法與console.log()一樣。

?console.dir(): 查看一個對象的內(nèi)容,并把對象信息輸出到控制臺。

//main.js
var person = {
  age: 38,
  name: 'kobe',
  job: function(){
    return 'player'
  }
};
console.log(person);

運行結(jié)果如下:

圖片.png

?console.time()與console.timeEnd() : 可以用來統(tǒng)計一段代碼的執(zhí)行時間。

//main.js
console.time('loop');
for(var i =0;i < 10000;i++){
  ;
}
console.timeEnd('loop');

運行結(jié)果如下:

圖片.png

?console.trace(): 把當(dāng)前位置的棧信息當(dāng)做標(biāo)準(zhǔn)錯誤信息輸出

console.trace('loop');
Trace: loop
    at Object.<anonymous> (D:\study\a.js:6:9)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

?console.assert(): 對一個表達(dá)式結(jié)果進(jìn)行評估,結(jié)果為false,輸出一個消息字符串并且拋出AssertionError異常

Node的全局作用域

Node中存在一個全局作用域,定義了不需要加載任何模塊就可以使用的變量,函數(shù),類。

// 查看global對象的內(nèi)容
console.log(global);

?定時器函數(shù)Node里面定義的定時器全局函數(shù)與瀏覽器端的定時器函數(shù)類型

1. setTimeout(cb,ms,[arg],[..]) : //過了多少ms執(zhí)行某個回調(diào)
2. clearTimeout(timer) // 取消setTimeout回調(diào)
3. setInterval(cb,ms,[arg],[..]): //每隔多少ms執(zhí)行某個回調(diào)
4. clearInterval(timer) // 取消setInterval回調(diào)
5. timer(定時器對象).unref(): //取消setTimeout/setInterval回調(diào)
6. timer.ref(): //恢復(fù)回調(diào)函數(shù)的使用

?require

1. require(): // 加載模塊
2. require.resolve('./a.js') // 'D:\\study\\a.js' 查看(不加載)某個模塊文件的帶完整絕對路徑的文件名
3. require.cache對象 //該對象表示緩存了所有已經(jīng)被加載的模塊的緩存區(qū)
4. delete 可以刪除緩存區(qū)某個模塊變量對象

?_ _filename與 __dirname

console.log(__filename); //D:\study\b.js 該變量表示當(dāng)前模塊文件的完整絕對路徑的文件名
console.log(__dirname); //D:\study 該變量表示當(dāng)前模塊文件所在目錄的完整絕對路徑

?事件處理機制/事件環(huán)機制event模塊定義了一個EventEmitter類,所有可能觸發(fā)事件的對象都是繼承了EventEmitter類的子類的實例對象.EventEmitter類定義了很多方法處理事件

addListener(event,listener) // 對指定的事件綁定事件處理函數(shù)
on(event,listener) // 對指定的事件綁定事件處理函數(shù)(addListener的別名),可以對同一事件綁定不同事件處理函數(shù)
once(event,listener) // 對指定事件只執(zhí)行一次綁定的事件處理函數(shù)
removeListener(event,listener) // 對指定事件解除事件處理函數(shù)
removeAllListener([event]) // 對指定事件解除所有事件處理函數(shù)
listeners(event) // 獲取指定事件的所有事件處理函數(shù)
emit(event,[args],[..]) // 手工觸發(fā)指定事件
setMaxListeners(n) // 指定事件處理函數(shù)的最大數(shù)量,默認(rèn)對同一事件最大綁定10個事件處理函數(shù).
EventEmitter.listenCount(emitter,event) // 獲取某個對象的指定事件的事件處理函數(shù)數(shù)量

Node的調(diào)試器

1. 在命令行輸入 node debug <被執(zhí)行的腳本文件名>// 啟動調(diào)試器
2. 啟動后,輸入cont/c  // 繼續(xù)執(zhí)行余下的代碼
3. 輸入next/n // 執(zhí)行下一句代碼
4. 輸入step/s // 進(jìn)入函數(shù)內(nèi)部
5. 輸入out/o //立即執(zhí)行完函數(shù)內(nèi)部剩余代碼
6. setBreakpoint/sb([filename默認(rèn)為當(dāng)前運行腳步] , line) //設(shè)置斷點
7. clearBreakpoint/cb([filename],line) // 取消斷點
8. 在調(diào)試過程輸入repl  // 進(jìn)入REPL環(huán)境
9. restart // 重新開始腳步調(diào)試
10. kill  // 終止腳本調(diào)試
11. list(n) // 查看當(dāng)前所執(zhí)行代碼之前/之后的n行代碼
12. backtrace/bt  // 查看函數(shù)/外層各函數(shù)的返回位置,包括返回代碼的行號,起始字符的所在位置
13. run // 重新開始腳步調(diào)試
14. scripts // 查看當(dāng)前運行的文件,及所有被加載的模塊文件名. 
15. version // 顯示V8引擎版本號
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言: 因為以前學(xué)習(xí)Node.js并沒有真正意義上的去學(xué)習(xí)它,而是粗略的學(xué)習(xí)了npm的常用命令和Node.js一些...
    Srtian閱讀 1,120評論 1 17
  • 內(nèi)容來自《Node.js開發(fā)指南》 核心模塊是 Node.js 的心臟,它由一些精簡而高效的庫組成,為 Node....
    angelwgh閱讀 982評論 0 1
  • Module definition patterns 除了作為加載依賴的機制之外,模塊系統(tǒng)也是一種用于定義AP...
    宮若石閱讀 567評論 0 0
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,737評論 2 41
  • 小編很早就知道樂高機器人,今年由于工作的原因更多接觸有關(guān)編程教育的內(nèi)容,了解到機器人編程只是編程其中一個分支的領(lǐng)域...
    創(chuàng)客站MakerUp閱讀 624評論 3 2

友情鏈接更多精彩內(nèi)容