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

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

控制臺

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

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)錯(cuò)誤流的輸出用法與console.log()一樣仪吧。

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

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

運(yùn)行結(jié)果如下:

圖片.png

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

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

運(yùn)行結(jié)果如下:

圖片.png

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

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(): 對一個(gè)表達(dá)式結(jié)果進(jìn)行評估,結(jié)果為false,輸出一個(gè)消息字符串并且拋出AssertionError異常

Node的全局作用域

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

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

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

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

?require

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

?_ _filename與 __dirname

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

?事件處理機(jī)制/事件環(huán)機(jī)制event模塊定義了一個(gè)EventEmitter類,所有可能觸發(fā)事件的對象都是繼承了EventEmitter類的子類的實(shí)例對象.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個(gè)事件處理函數(shù).
EventEmitter.listenCount(emitter,event) // 獲取某個(gè)對象的指定事件的事件處理函數(shù)數(shù)量

Node的調(diào)試器

1. 在命令行輸入 node debug <被執(zhí)行的腳本文件名>// 啟動(dòng)調(diào)試器
2. 啟動(dòng)后,輸入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)前運(yùn)行腳步] , line) //設(shè)置斷點(diǎn)
7. clearBreakpoint/cb([filename],line) // 取消斷點(diǎn)
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)前運(yùn)行的文件,及所有被加載的模塊文件名. 
15. version // 顯示V8引擎版本號
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末士葫,一起剝皮案震驚了整個(gè)濱河市乞而,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慢显,老刑警劉巖爪模,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荚藻,居然都是意外死亡屋灌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門鞋喇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來声滥,“玉大人,你說我怎么就攤上這事侦香÷渌埽” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵罐韩,是天一觀的道長憾赁。 經(jīng)常有香客問我,道長散吵,這世上最難降的妖魔是什么龙考? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮矾睦,結(jié)果婚禮上晦款,老公的妹妹穿的比我還像新娘。我一直安慰自己枚冗,他們只是感情好缓溅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赁温,像睡著了一般坛怪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上股囊,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天袜匿,我揣著相機(jī)與錄音,去河邊找鬼稚疹。 笑死居灯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穆壕,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼待牵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了喇勋?” 一聲冷哼從身側(cè)響起缨该,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎川背,沒想到半個(gè)月后贰拿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熄云,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年膨更,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缴允。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荚守,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出练般,到底是詐尸還是另有隱情矗漾,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布薄料,位于F島的核電站敞贡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摄职。R本人自食惡果不足惜誊役,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谷市。 院中可真熱鬧蛔垢,春花似錦、人聲如沸迫悠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽及皂。三九已至甫男,卻和暖如春且改,著一層夾襖步出監(jiān)牢的瞬間验烧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工又跛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碍拆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像感混,于是被迫代替她去往敵國和親端幼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

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