最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

跟我學(xué)Node.js(四)---Node.js的模塊載入方式與機制

 更新時間:2014年06月04日 10:17:37   作者:  
Node.js中模塊可以通過文件路徑或名字獲取模塊的引用。模塊的引用會映射到一個js文件路徑,除非它是一個Node內(nèi)置模塊。Node的內(nèi)置模塊公開了一些常用的API給開發(fā)者,并且它們在Node進程開始的時候就預(yù)加載了。

其它的如通過NPM安裝的第三方模塊(third-party modules)或本地模塊(local modules),每個模塊都會暴露一個公開的API。以便開發(fā)者可以導(dǎo)入。如

復(fù)制代碼 代碼如下:

var mod = require('module_name')

此句執(zhí)行后,Node內(nèi)部會載入內(nèi)置模塊或通過NPM安裝的模塊。require函數(shù)會返回一個對象,該對象公開的API可能是函數(shù),對象,或者屬性如函數(shù),數(shù)組,甚至任意類型的JS對象。

這里列下node模塊的載入及緩存機制

1)載入內(nèi)置模塊(A Core Module)
2)載入文件模塊(A File Module)
3)載入文件目錄模塊(A Folder Module)
4)載入node_modules里的模塊
5)自動緩存已載入模塊

一、載入內(nèi)置模塊

Node的內(nèi)置模塊被編譯為二進制形式,引用時直接使用名字而非文件路徑。當(dāng)?shù)谌降哪K和內(nèi)置模塊同名時,內(nèi)置模塊將覆蓋第三方同名模塊。因此命名時需要注意不要和內(nèi)置模塊同名。如獲取一個http模塊

復(fù)制代碼 代碼如下:

var http = require('http')

返回的http即是實現(xiàn)了HTTP功能Node的內(nèi)置模塊。

二、載入文件模塊

絕對路徑的

復(fù)制代碼 代碼如下:
 
var myMod = require('/home/base/my_mod')


或相對路徑的

復(fù)制代碼 代碼如下:
 
var myMod = require('./my_mod')


注意,這里忽略了擴展名“.js”,以下是對等的

復(fù)制代碼 代碼如下:
 
var myMod = require('./my_mod')
var myMod = require('./my_mod.js')

  
三、載入文件目錄模塊

可以直接require一個目錄,假設(shè)有一個目錄名為folder,如

復(fù)制代碼 代碼如下:
 
var myMod = require('./folder')

此時,Node將搜索整個folder目錄,Node會假設(shè)folder為一個包并試圖找到包定義文件package.json。如果folder目錄里沒有包含package.json文件,Node會假設(shè)默認主文件為index.js,即會加載index.js。如果index.js也不存在,那么加載將失敗。

假如目錄結(jié)構(gòu)如下

package.json定義如下

復(fù)制代碼 代碼如下:

{
    "name": "pack",
    "main": "modA.js"
}

此時 require('./folder') 將返回模塊modA.js。如果package.json不存在,那么將返回模塊index.js。如果index.js也不存在,那么將發(fā)生載入異常。

四、載入node_modules里的模塊

如果模塊名不是路徑,也不是內(nèi)置模塊,Node將試圖去當(dāng)前目錄的node_modules文件夾里搜索。如果當(dāng)前目錄的node_modules里沒有找到,Node會從父目錄的node_modules里搜索,這樣遞歸下去直到根目錄。

不必擔(dān)心,npm命令可讓我們很方便的去安裝,卸載,更新node_modules目錄。

五、自動緩存已載入模塊

對于已加載的模塊Node會緩存下來,而不必每次都重新搜索。下面是一個示例

modA.js

復(fù)制代碼 代碼如下:

console.log('模塊modA開始加載...')
exports = function() {
    console.log('Hi')
}
console.log('模塊modA加載完畢')

init.js

復(fù)制代碼 代碼如下:
 
var mod1 = require('./modA')
var mod2 = require('./modA')
console.log(mod1 === mod2)

命令行執(zhí)行:

node init.js

輸入如下

可以看到雖然require了兩次,但modA.js仍然只執(zhí)行了一次。mod1和mod2是相同的,即兩個引用都指向了同一個模塊對象。

相關(guān)文章

  • 前端大屏適配的三種解決方案總結(jié)

    前端大屏適配的三種解決方案總結(jié)

    在日常前端開發(fā)中,大屏項目是每個前端開發(fā)者必備技能,但是目前設(shè)備尺寸大小和分辨率都不相同,所以大屏適配成了一個頭疼的問題,所以下面這篇文章主要給大家介紹了關(guān)于前端大屏適配的三種解決方案,需要的朋友可以參考下
    2024-03-03
  • js中的push和join方法使用介紹

    js中的push和join方法使用介紹

    push和join方法想必大家并不陌生吧,在本文將為大家詳細介紹下js中的push和join方法的使用,感興趣的朋友可以參考下
    2013-10-10
  • uniapp 如何設(shè)置 tabbar 的 midButton 按鈕

    uniapp 如何設(shè)置 tabbar 的 midButton 按鈕

    在UniApp開發(fā)中,設(shè)置TabBar的midButton按鈕可以增加用戶交互的便利性,本文介紹了在App.vue中監(jiān)聽事件的方法,并提供了官方文檔鏈接作為參考,通過這種方式可以實現(xiàn)TabBar中的特殊按鈕功能,提升應(yīng)用的用戶體驗
    2024-10-10
  • javascript小數(shù)精度丟失的完美解決方法

    javascript小數(shù)精度丟失的完美解決方法

    下面小編就為大家?guī)硪黄猨avascript小數(shù)精度丟失的完美解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 在JS中解析HTML字符串示例代碼

    在JS中解析HTML字符串示例代碼

    這篇文章主要介紹了在JS中如何解析HTML字符串,需要的朋友可以參考下
    2014-04-04
  • 微信小程序自定義modal彈窗組件的方法詳解

    微信小程序自定義modal彈窗組件的方法詳解

    這篇文章主要給大家介紹了關(guān)于微信小程序自定義modal彈窗組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js實現(xiàn)日期顯示的一些操作(實例講解)

    js實現(xiàn)日期顯示的一些操作(實例講解)

    下面小編就為大家?guī)硪黄猨s實現(xiàn)日期顯示的一些操作(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • JS進階之從多線程到Event?Loop全面梳理

    JS進階之從多線程到Event?Loop全面梳理

    JS是通過事件隊列(Event?Loop)的方式來實現(xiàn)異步回調(diào)的,但對很多初學(xué)JS的人來說,根本搞不清楚單線程的JS為什么擁有異步的能力,所以本文將從進程、線程的角度來解釋這個問題
    2023-05-05
  • ionic中列表項增加和刪除的實現(xiàn)方法

    ionic中列表項增加和刪除的實現(xiàn)方法

    在項目中遇到表單似的頁面,需要進行增加一行和減少一行的操作,基于ionic怎么實現(xiàn)呢?下面小編給大家分享ionic中列表項增加和刪除的實現(xiàn)方法,一起看看吧
    2017-01-01
  • PDF.js前端開發(fā)使用代碼示例及實用技巧

    PDF.js前端開發(fā)使用代碼示例及實用技巧

    pdf.js是一款Nozilla開發(fā)的、用于網(wǎng)頁上顯示pdf文檔的Javascript庫,提供pdf文件的在線閱讀,這篇文章主要給大家介紹了關(guān)于PDF.js前端開發(fā)使用實用技巧的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04

最新評論

六安市| 桐庐县| 凤阳县| 高平市| 宜宾县| 五峰| 玛沁县| 长治县| 叶城县| 宜宾市| 会泽县| 合山市| 偏关县| 柯坪县| 昭觉县| 博乐市| 嵊州市| 工布江达县| 霸州市| 甘肃省| 嘉定区| 竹溪县| 兴仁县| 浙江省| 襄垣县| 博湖县| 吉隆县| 白沙| 东光县| 卢湾区| 宁陵县| 呈贡县| 望谟县| 蛟河市| 壶关县| 岳池县| 孝义市| 泽库县| 南郑县| 三亚市| 沭阳县|