nodejs常用的全局對象和一些內(nèi)部模塊

特點(diǎn):

(1)前后端都用js編寫容易實(shí)現(xiàn)全棧

(2)非阻塞 i/o (最重要)

(3)完善的生態(tài)

(4)使用v8引擎

劣勢:nodejs不適合計(jì)算密集型程序悼嫉,只適合 i/o 密集型程序

運(yùn)行node:(1)進(jìn)入到當(dāng)前文件所在路徑

(2)運(yùn)行node必須使用命令行,node+文件名字運(yùn)行

異步:代碼不是一行一行執(zhí)行的

回調(diào):當(dāng)做完一件事的時(shí)候兵钮,馬上反饋這件事

相對路徑:“.”或者“無”開頭的就是相對路徑

js創(chuàng)建對象:(1){a:1}

(2)var obj??= new Object();

(3)function bar(){

this.a = 3;

}

全局對象:可以直接調(diào)用的對象我們稱之為全局對象

1.console:可以調(diào)用log這個(gè)方法

2.setTimeout:超時(shí)調(diào)用

3.setInterval:間歇調(diào)用

4._ _dirname:當(dāng)前文件所在路徑

5._ _filename:當(dāng)前文件的路徑包括文件名

6.require:require的參數(shù)就是exports曝光文件的相對路徑 ?require('./index.js');

7.exports:曝光,曝光后的變量別的文件就可以使用require引用

使用exports曝光變量必須加上屬性睡榆,屬性名可以自擬卵牍,然后可以曝光給其他文件,對象的鍵是屬性名削罩,值是曝光變量的值

(1)曝光變量(2)曝光對象(3)曝光方法(4)曝光構(gòu)造函數(shù)

(5)曝光工廠函數(shù):使用new Object創(chuàng)建對象瞄勾,返回值费奸,返回的是創(chuàng)建的對象

8.module:module和exports一起使用,exports可以作為module的屬性

可以不添加屬性进陡,使用require引用

(1)pwd:顯示當(dāng)前路徑??(2)cd:切換??(3)ls:展示下級(jí)所有

OS——官方為我們提供的文件 operation system操作系統(tǒng)

(1)使用官方為我們提供的js文件愿阐,需省略‘.js’后綴。

(2)不能以‘.’開頭趾疚,如果引用自己定義的文件缨历,路徑必須以‘.’開頭。

OS的作用:

node.js官方為我們提供有助于編程的文件糙麦,叫核心模塊戈二,都可以用require引用

(1)打印操作系統(tǒng),查看當(dāng)前node.js運(yùn)行的平臺(tái)是什么操作系統(tǒng)

console.log(os.platform());

(2)cpus:打印cpu參數(shù)和cpu核數(shù)

(3)hostname:打印主機(jī)名稱

(4)arch打印cpu架構(gòu)

核心模塊喳资!

1.process — 進(jìn)程:一個(gè)程序運(yùn)行起來就是進(jìn)程觉吭,有進(jìn)程就有進(jìn)程號(hào)

可以通過pid查看當(dāng)前node運(yùn)行的進(jìn)程號(hào)

2.util — untility(工具)

可以格式化我們的字符串

(1)format:%d表示數(shù)字???%s表示字符串

(2)util:可以查看屬性和方法明細(xì),通過inspect仆邓。

(3)depth:打印到第幾層????????console.log(util.inspect(util,{depth:1 } ) );

3.path — 用來操作路徑

1.parse 解析路徑

(1)root:根目錄

(2)dir:當(dāng)前文件所在的目錄

(3)base:當(dāng)前文件的帶有擴(kuò)展名的文件名

(4)ext:擴(kuò)展名

(5)name:文件名

2.join 合并路徑

join里面的參數(shù)可以是路徑和文件的名字

3.isAbsolute是否絕對路徑

它的返回值是布爾值鲜滩,如果true為絕對路徑,否則為相對路徑

4.extname — 得到文件的擴(kuò)展名

4.events — 引用時(shí)間模塊后节值,需創(chuàng)建監(jiān)聽發(fā)射事件的對象

使用事件需要映入時(shí)間模塊events徙硅,必須加s

使用事件必須創(chuàng)建EventEmitter這個(gè)對象,這里的Event沒有s搞疗,第一個(gè)字母大寫

var em = new event.EventEmitter;

(1)on 監(jiān)聽事件方法

(2)emit 用來觸發(fā)事件

(3)once 只監(jiān)聽一次

5.Buffer

①就是緩存嗓蘑,存數(shù)據(jù),存比較大的數(shù)據(jù)

②存放的為二進(jìn)制的數(shù)據(jù)

③Buffer的數(shù)據(jù)存在主機(jī)內(nèi)存中匿乃,內(nèi)存多大可以存多大

創(chuàng)建Buffer

1.使用new創(chuàng)建?????var buf = new Buffer()桩皿;

①Buffer也是一個(gè)全局對象

②Buffer第一個(gè)字母大寫

③Buffer括號(hào)中的內(nèi)容為Buffer的大小,單位字節(jié)

2.使用字符串創(chuàng)建

var buf = new Buffer(‘hello’)幢炸;

console.log(buf.toString())泄隔;

toString();可以把它打印成字符串

3.使用數(shù)組創(chuàng)建

var buf = new Buffer([1,3]);

6.流(stream)

在計(jì)算機(jī)中任何數(shù)據(jù)傳輸都是通過流

在node.js中流是一個(gè) 抽象的接口,用來傳輸010101(二進(jìn)制)宛徊,其實(shí)就是數(shù)據(jù)

在nide.js中流這個(gè)抽象的接口出去的就是數(shù)據(jù)流

在node.js中流(stream)也是核心模塊

可以把stream看成Event.Emitter的子類

因?yàn)閞equire('stream')曝光的是構(gòu)造方法佛嬉,所以需要new創(chuàng)建對象

流的方向:在node.js中流是有方向的是相對于cpu分為讀流和寫流

創(chuàng)建讀流:Readable

創(chuàng)建寫流:Writable

創(chuàng)建讀寫流:Duplex

總結(jié):

流是一個(gè)抽象的接口,包括讀流寫流和讀寫流在node.js中流不是字節(jié)流node.js中基本上不會(huì)自己創(chuàng)建流闸天,都是使用其它模塊為我們創(chuàng)建好的流

小結(jié)總結(jié):

核心模塊:os ?process ?path ?events ?util ?stream

全局對象:console ?__dirname ?__filename setTimeout setIntval module exports require

7.文件模塊(fs【file system】)

文件模塊是任何語言都很重要的模塊

在計(jì)算機(jī)中除了文件夾都是文件暖呕,在linux中,只有文件

fs模塊對文件的操作主要就是增刪改查

在node.js中任何對文件的操作都分為同步異步

①異步讀取文件 readFile()

第一個(gè)參數(shù)文件路徑苞氮,第二個(gè)參數(shù)是回調(diào)湾揽,注意在回調(diào)函數(shù)中有兩個(gè)參數(shù),第一個(gè)是error,第二個(gè)是獨(dú)到的數(shù)據(jù)

fs會(huì)把文件讀取到Buffer中

因?yàn)槟阋雈s這個(gè)模塊所以readFile()這個(gè)官方的方法已經(jīng)寫好了钝腺,作用就是讀取完的數(shù)據(jù)會(huì)自動(dòng)放到回調(diào)函數(shù)的data中如果有錯(cuò)誤會(huì)通過error報(bào)出

②同步讀取文件 readFileSync()

一個(gè)參數(shù)及文件路徑

③異步寫文件 writeFile()

第一個(gè)參數(shù)要寫入文件的路徑抛姑,第二個(gè)寫入文件的內(nèi)容赞厕,第三個(gè)回調(diào)函數(shù)艳狐,回調(diào)參數(shù)只有一個(gè)參數(shù)就是error

④同步寫文件 ?writeFileSync()

第一個(gè)參數(shù)路徑,第二個(gè)參數(shù)要寫的內(nèi)容

⑤異步追加文件內(nèi)容 ?appendFile()

第一個(gè)參數(shù)路徑皿桑,第二個(gè)參數(shù)內(nèi)容毫目,第三個(gè)參數(shù)回調(diào),回調(diào)參數(shù)是error

⑥同步追加文件內(nèi)容 appendFileSync()

第一個(gè)參數(shù)路徑诲侮,第二個(gè)參數(shù)是追加的內(nèi)容

⑦異步改變文件名 rename()

第一個(gè)參數(shù)是老名字镀虐,第二個(gè)參數(shù)是新名字,第三個(gè)參數(shù)是回調(diào)函數(shù)返回error

⑧同步改變文件名renameSync()

第一個(gè)參數(shù)是老名字沟绪,第二個(gè)參數(shù)是新名字

8.文件和流

一刮便、使用流讀取文件 createReadStream()

一個(gè)參數(shù)要讀文件的路徑

注意:該方法返回的是一個(gè)讀流

因?yàn)樽x流是繼承EventEmitter所以讀流on和emit事件

①使用讀流獲取數(shù)據(jù)需要用on且第一個(gè)參數(shù)為'data',不用emit觸發(fā)該事件绽慈,第二個(gè)參數(shù)是一個(gè)回調(diào)函數(shù)且有一個(gè)參數(shù)則該參數(shù)是被讀文件的內(nèi)容

沒通過emit觸發(fā)事件卻調(diào)用了函數(shù)是因?yàn)槭褂玫膄s.createReadStream創(chuàng)建的流這個(gè)方法是官方定義的恨旱,所以當(dāng)讀流的時(shí)候就可以自動(dòng)觸發(fā)'data'事件,當(dāng)檢測文件有數(shù)據(jù)的時(shí)候回調(diào)函數(shù)的參數(shù)就是我們讀取的文件的內(nèi)容

②可以通過給createStream()添加選項(xiàng)來指定我們讀取字節(jié)的個(gè)數(shù)坝疼,選項(xiàng)是第二個(gè)參數(shù)搜贤,是一個(gè)js對象{start:起始位置,end:結(jié)束位置}

③還可以通過'end'事件來額外操作,該事件是在讀取完文檔后觸發(fā)钝凶,所以之前必須有'data'事件

總結(jié):說明讀流會(huì)自動(dòng)觸發(fā)兩個(gè)事件'data'和'end'

二仪芒、使用流寫文件 createWriteStream()

注意:該方法返回的是一個(gè)寫流

寫流通過write方法寫入內(nèi)容,方法的參數(shù)就是寫入的內(nèi)容

寫流通過end方法告訴文件所有內(nèi)容寫入完畢

注意不能在end方法后使用write方法會(huì)出錯(cuò)

全總結(jié):讀流兩事件耕陷,寫流兩方法

readFile和createReadStream的區(qū)別

文件是當(dāng)前所有內(nèi)容讀取完后操作

流是對文件中的字節(jié)操作

比如:在流中專門提供了{(lán)start:"起始位置",end:"結(jié)束位置"}的方法對文件內(nèi)容進(jìn)行邊讀邊截取

但是在文件中需要先把文件內(nèi)容全部獲取然后在通過字符串的方法進(jìn)行截取

9.net

服務(wù)器端:

① 引入模塊

②創(chuàng)建服務(wù)器端對象

createServer()

③監(jiān)聽

listen()

一個(gè)參數(shù):端口號(hào)

④使用connection事件

只要客戶端連接就會(huì)觸發(fā)這個(gè)事件

⑤將客戶端的client對象返回到createServer的參數(shù)中

⑥client是繼承流的所以可以讀流掂名,可以使用'data'事件

客戶端:

①引入模塊

②創(chuàng)建連接對象 createConnection()

兩個(gè)參數(shù),第一個(gè)是要連接的端口的端口號(hào)哟沫,第二個(gè)是要連接的主機(jī)的ip地址(本機(jī):127.0.0.1或者localhost)

③使用connect事件

④client是繼承流的所以可以寫流铆隘,可以使用write方法書寫文本

10、readline? ? 逐行讀取

獲取當(dāng)前輸入的內(nèi)容南用,需要進(jìn)程模塊輔助創(chuàng)建readline對象

var? ? rd=new readline.createInterface({input:p.stdin,output:p.stdout})

監(jiān)聽line事件膀钠,該事件是當(dāng)接收到回車時(shí)觸發(fā)

11、url? ? 網(wǎng)址? ? 統(tǒng)一資源定位符? ? (unit resouny location)

①url.parse()? ??打印網(wǎng)址的詳細(xì)信息(參數(shù)是網(wǎng)址)

12裹虫、querystring? ? 查詢字符串

①qs.parse()? ? 用來將a=b這種格式解析成{a:b}

13肿嘲、http? ? (超文本傳輸協(xié)議:hyper? ? text? ? transfer? ? protocal)

①引入http模塊

②創(chuàng)建http對象

createServer()

③監(jiān)聽端口

listen()

④請求時(shí)要執(zhí)行的部分

在createServer中加上回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)就是我所要執(zhí)行的任務(wù)筑公,createServer的作用就是當(dāng)有請求?? ?? ? ? ? ? ?的時(shí)候雳窟,執(zhí)行function這里面的代碼。

回調(diào)函數(shù)有兩個(gè)參數(shù)都是對象

①req(request)用來請求對象? ? 繼承讀流

1.url? ? 表示請求的url地址

2.method? ? 請求方法(post,get封救,pnt拇涤,delete,update誉结,Head~~~)

②res(response)表示響應(yīng)對象? ? 繼承寫流

可以通過fs模塊引入html模塊輸入到網(wǎng)頁中

node js還有很多外部模塊后面會(huì)更新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹅士,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子惩坑,更是在濱河造成了極大的恐慌掉盅,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件以舒,死亡現(xiàn)場離奇詭異趾痘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蔓钟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門永票,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人滥沫,你說我怎么就攤上這事侣集。” “怎么了佣谐?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵肚吏,是天一觀的道長。 經(jīng)常有香客問我狭魂,道長罚攀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任雌澄,我火速辦了婚禮斋泄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镐牺。我一直安慰自己炫掐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布睬涧。 她就那樣靜靜地躺著募胃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畦浓。 梳的紋絲不亂的頭發(fā)上痹束,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音讶请,去河邊找鬼祷嘶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的论巍。 我是一名探鬼主播烛谊,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘉汰!你這毒婦竟也來了丹禀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤郑现,失蹤者是張志新(化名)和其女友劉穎湃崩,沒想到半個(gè)月后荧降,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體接箫,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年朵诫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辛友。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剪返,死狀恐怖废累,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脱盲,我是刑警寧澤邑滨,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站钱反,受9級(jí)特大地震影響掖看,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜面哥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一哎壳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尚卫,春花似錦归榕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怎爵,卻和暖如春特石,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疙咸。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工县匠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓乞旦,卻偏偏與公主長得像贼穆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子兰粉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,338評論 0 6
  • Node.js是目前非彻嗜火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特玖姑。 眾所周知愕秫,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,616評論 2 41
  • Node.js是目前非常火熱的技術(shù)焰络,但是它的誕生經(jīng)歷卻很奇特戴甩。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,072評論 2 58
  • 《道德經(jīng)》第31章:夫兵者闪彼,不祥之器甜孤,物或惡之,故有道者不處畏腕。君子居則貴左缴川,用兵則貴右。兵者不祥之器描馅,非君子之器把夸,...
    奔跑的石頭閱讀 12,044評論 1 14
  • 1. 叮鈴鈴恋日,叮鈴鈴,叮鈴鈴…… 聽不見况凉,聽不見谚鄙,聽不見…… 叮鈴鈴,叮鈴鈴刁绒,叮鈴鈴…… 呃……你贏了闷营。 “喂?”...
    蔻蔻小魚閱讀 572評論 0 1