node.js基礎(chǔ)

什么是node.js

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境涂炎。
Node.js 使用了一個事件驅(qū)動愕够、非阻塞式 I/O的模型果漾,使其輕量又高效壳猜。
NodeJS就是一個解析器,node的環(huán)境和瀏覽器的環(huán)境不同氓癌,是沒有BOM和DOM對象的谓谦,不過運(yùn)行在NodeJS中的JS的用途是操作磁盤文件或搭建HTTP服務(wù)器,NodeJS相應(yīng)提供了fs贪婉、http等內(nèi)置對象

Node.js的安裝

可以在nodejs.org這里找到對應(yīng)的系統(tǒng)和版本下載并安裝
在安裝Node.js時也會相應(yīng)的安裝npm反粥,npm是node的包管理工具,通過npm可以用命令行快速的下載所需要的node模塊疲迂。

異步操作

Node采用V8引擎處理JavaScript腳本才顿,最大特點(diǎn)就是單線程運(yùn)行,一次只能運(yùn)行一個任務(wù)尤蒿。這導(dǎo)致Node大量采用異步操作(asynchronous operation)郑气,即任務(wù)不是馬上執(zhí)行,而是插在任務(wù)隊(duì)列的尾部腰池,等到前面的任務(wù)運(yùn)行完后再執(zhí)行尾组。
由于這種特性,某一個任務(wù)的后續(xù)操作示弓,往往采用回調(diào)函數(shù)(callback)的形式進(jìn)行定義讳侨。

Node約定,如果某個函數(shù)需要回調(diào)函數(shù)作為參數(shù)避乏,則回調(diào)函數(shù)是最后一個參數(shù)爷耀。另外,回調(diào)函數(shù)本身的第一個參數(shù)拍皮,約定為上一步傳入的錯誤對象。

回調(diào)函數(shù)的第一個參數(shù)是Error對象跑杭,第二個參數(shù)才是真正的數(shù)據(jù)參數(shù)铆帽,因?yàn)榛卣{(diào)函數(shù)主要用于異步操作,當(dāng)回調(diào)函數(shù)運(yùn)行時德谅,前期的操作早結(jié)束了爹橱,錯誤的執(zhí)行棧早就不存在了,傳統(tǒng)的錯誤捕捉機(jī)制try…catch對于異步操作行不通窄做,所以只能把錯誤交給回調(diào)函數(shù)處理愧驱。
Node統(tǒng)一規(guī)定,一旦異步操作發(fā)生錯誤椭盏,就把錯誤對象傳遞到回調(diào)函數(shù)组砚。

全局對象和全局變量

Node提供以下幾個全局對象,它們是所有模塊都可以調(diào)用的掏颊。
global:表示Node所在的全局環(huán)境糟红,類似于瀏覽器的window對象艾帐。需要注意的是,如果在瀏覽器中聲明一個全局變量盆偿,實(shí)際上是聲明了一個全局對象的屬性柒爸,比如var x = 1等同于設(shè)置window.x = 1,但是Node不是這樣事扭,至少在模塊中不是這樣(REPL環(huán)境的行為與瀏覽器一致)捎稚。在模塊文件中,聲明var x = 1求橄,該變量不是global對象的屬性阳藻,global.x等于undefined。這是因?yàn)槟K的全局變量都是該模塊私有的谈撒,其他模塊無法取到腥泥。
process:該對象表示Node所處的當(dāng)前進(jìn)程,允許開發(fā)者與該進(jìn)程互動啃匿。
console:指向Node內(nèi)置的console模塊蛔外,提供命令行環(huán)境中的標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出功能溯乒。

Node還提供一些全局函數(shù)夹厌。
setTimeout():用于在指定毫秒之后,運(yùn)行回調(diào)函數(shù)裆悄。實(shí)際的調(diào)用間隔矛纹,還取決于系統(tǒng)因素。間隔的毫秒數(shù)在1毫秒到2,147,483,647毫秒(約24.8天)之間光稼。如果超過這個范圍或南,會被自動改為1毫秒。該方法返回一個整數(shù)艾君,代表這個新建定時器的編號采够。
clearTimeout():用于終止一個setTimeout方法新建的定時器。
setInterval():用于每隔一定毫秒調(diào)用回調(diào)函數(shù)冰垄。由于系統(tǒng)因素蹬癌,可能無法保證每次調(diào)用之間正好間隔指定的毫秒數(shù),但只會多于這個間隔虹茶,而不會少于它逝薪。指定的毫秒數(shù)必須是1到2,147,483,647(大約24.8天)之間的整數(shù),如果超過這個范圍蝴罪,會被自動改為1毫秒董济。該方法返回一個整數(shù),代表這個新建定時器的編號洲炊。
clearInterval():終止一個用setInterval方法新建的定時器感局。
require():用于加載模塊尼啡。
Buffer():用于操作二進(jìn)制數(shù)據(jù)。

Node提供兩個全局變量询微,都以兩個下劃線開頭崖瞭。
__filename:指向當(dāng)前運(yùn)行的腳本文件名。
__dirname:指向當(dāng)前運(yùn)行的腳本所在的目錄撑毛。

除此之外书聚,還有一些對象實(shí)際上是模塊內(nèi)部的局部變量,指向的對象根據(jù)模塊不同而不同藻雌,但是所有模塊都適用雌续,可以看作是偽全局變量,主要為module, module.exports, exports等胯杭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驯杜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子做个,更是在濱河造成了極大的恐慌鸽心,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件居暖,死亡現(xiàn)場離奇詭異顽频,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)太闺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門糯景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人省骂,你說我怎么就攤上這事蟀淮。” “怎么了冀宴?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵灭贷,是天一觀的道長。 經(jīng)常有香客問我略贮,道長,這世上最難降的妖魔是什么仗岖? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任逃延,我火速辦了婚禮,結(jié)果婚禮上轧拄,老公的妹妹穿的比我還像新娘揽祥。我一直安慰自己,他們只是感情好檩电,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布拄丰。 她就那樣靜靜地躺著府树,像睡著了一般。 火紅的嫁衣襯著肌膚如雪料按。 梳的紋絲不亂的頭發(fā)上奄侠,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音载矿,去河邊找鬼垄潮。 笑死,一個胖子當(dāng)著我的面吹牛闷盔,可吹牛的內(nèi)容都是我干的弯洗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逢勾,長吁一口氣:“原來是場噩夢啊……” “哼牡整!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溺拱,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逃贝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盟迟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秋泳,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年攒菠,在試婚紗的時候發(fā)現(xiàn)自己被綠了迫皱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辖众,死狀恐怖卓起,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凹炸,我是刑警寧澤戏阅,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站啤它,受9級特大地震影響奕筐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜变骡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一离赫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧塌碌,春花似錦渊胸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胖翰。三九已至,卻和暖如春切厘,著一層夾襖步出監(jiān)牢的瞬間萨咳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工迂卢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留某弦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓而克,卻偏偏與公主長得像靶壮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子员萍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354