步遙——Node之模塊實(shí)現(xiàn)

針對(duì)開發(fā)中的技術(shù)選型:node的優(yōu)點(diǎn)如下:
node面向網(wǎng)絡(luò)并且擅長并行I/O,能夠有效的組織起更多的硬件資源,從而提供更好的服務(wù)。I/O密集的優(yōu)勢主要是在于Node利用事件循環(huán)的處理,而不是啟用每一個(gè)線程為每一個(gè)請(qǐng)求服務(wù),資源占用極少。node可以合理的調(diào)度子進(jìn)程,從而處理cpu密集型的操作,也可以通過c/c++擴(kuò)展的方式實(shí)現(xiàn)高密度的計(jì)算。
node引入模塊的流程:
node進(jìn)程啟動(dòng)時(shí),部分核心模塊就已經(jīng)被加載進(jìn)內(nèi)存中,所以在路徑分析,文件定位時(shí)加載的速度非常的快,而用戶編寫的模塊則需要完整的路徑分析,文件定位,編譯執(zhí)行過程,也就是要嚴(yán)格執(zhí)行模塊加載的3個(gè)流程。
模塊加載的過程:優(yōu)先從緩存中加載模塊,node中對(duì)二次引入的模塊會(huì)一律采用緩存優(yōu)先的方式,就是第一次模塊編譯和執(zhí)行之后的對(duì)象。
node引入文件模塊時(shí)可以不加擴(kuò)展名,這樣在定位文件的時(shí)候,會(huì)根據(jù)后綴為.js,json,.node依次嘗試,所以查找會(huì)比較慢,好的方式就給文件加上對(duì)應(yīng)的后綴名。
編寫node的模塊中的require,module,exports,__filename,__dirname是哪里來的呢?
js開發(fā)中多模塊的文件引入,為了不造成全局變量不被污染,所以都是以立即執(zhí)行函數(shù)形成一個(gè)封閉的作用域,每個(gè)模塊都這么寫不是很費(fèi)事嗎?所以,node就把這種重復(fù)的工作給拿過來啦,在編譯的過程中,Node對(duì)js文件的內(nèi)容進(jìn)行頭尾包裝,在頭部添加了(function(exports,require,module,__filename,__dirname){//模塊代碼 }),每個(gè)文件都做了作用域的隔離,當(dāng)前的模塊對(duì)象的exports,require,module,__filename,__dirname,作為參數(shù)傳遞給function內(nèi)部使用。
node在啟動(dòng)時(shí),會(huì)生成一個(gè)全局變量process,并提供Binding()方法來協(xié)助加載內(nèi)建模塊。Binding()模塊的實(shí)現(xiàn)代碼在src/node.cc中,

發(fā)布包:

npm init //生成一個(gè)package.json文件
npm adduser //在npm官網(wǎng)注冊(cè)或登錄
npm publish .//將包發(fā)布到npm官網(wǎng)中
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 該篇文章來源博客園小火柴的藍(lán)色理想 Commonjs規(guī)范及Node模塊實(shí)現(xiàn)。 與JS比較 ??NodeJS是區(qū)別于...
    小小的開發(fā)人員閱讀 462評(píng)論 0 1
  • 異步I/O 在Node中,我們可以從語言層面很自然的進(jìn)行一并I/O操作,每個(gè)調(diào)用之間無須等待之前的I/O調(diào)用結(jié)束,...
    Upcccz閱讀 600評(píng)論 0 2
  • node的模塊實(shí)現(xiàn) Node在實(shí)現(xiàn)中并非完全按照規(guī)范實(shí)現(xiàn),而是對(duì)模塊規(guī)范進(jìn)行了一定的取舍,同是也增加了少許自身需要...
    萘小蒽閱讀 845評(píng)論 0 0
  • 原文鏈接 之前筆者對(duì)nodejs中的模塊是如何引入的也是一頭霧水,讀了一本《深入淺出nodejs》,加上自己工作時(shí)...
    鷗曉栢閱讀 1,792評(píng)論 0 1
  • CommonJS規(guī)范 Javascript作為前端語言一直發(fā)展的很好,但是作為后端JavaScript的規(guī)范卻遠(yuǎn)遠(yuǎn)...
    人失格閱讀 890評(píng)論 0 0

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