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

node.js中module模塊的功能理解與用法實例分析

 更新時間:2020年02月14日 09:16:36   作者:懷素真  
這篇文章主要介紹了node.js中module模塊的功能理解與用法,結(jié)合實例形式分析了node.js module模塊的基本功能、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下

本文實例講述了node.js中module模塊的功能理解與用法。分享給大家供大家參考,具體如下:

node.js中使用CommonJS規(guī)范實現(xiàn)模塊功能,一個單獨的文件就是一個單獨的模塊。通過require方法實現(xiàn)模塊間的依賴管理。

通過require加載模塊,是同步操作。

加載流程如下:

1、找到需要加載的模塊文件。

2、判斷是否緩存過,如果沒有,則讀取模塊文件的內(nèi)容。

3、把讀取到的內(nèi)容,封裝在一個函數(shù)里運行。

(function (exports, require, module, __filename, __dirname) {
  //模塊的代碼實際上在這里
});

4、返回 module.exports 需要導出的內(nèi)容。

exports 表示模塊的導出對象

require 表示require方法

module 表示當前模塊對象

__filename 表示當前文件的絕對路徑

__dirname 表示當前文件夾的絕對路徑

在模塊的內(nèi)部,this 指向的是 當前模塊的導出對象

console.log(this === module.exports);
console.log(this === exports);

module對象有不少屬性,可以打印出來看看。

console.log(module);

module.id 表示模塊的標識符。

module.exports 表示模塊的導出對象。

module.parent 表示當前模塊的父模塊,當前模塊是誰加載的。

module.filename 表示模塊的絕對路徑。

module.loaded 表示是否加載完成。

module.children 表示當前模塊加載了哪些模塊。

module.paths 表示模塊的搜索路徑,路徑的多少取決于目錄的深度。

node.js通過require方法加載文件是同步的,為了提高效率,會緩存已經(jīng)加載過的文件。

console.log(require.cache);

緩存的key是模塊的絕對路徑,value是module對象。

require.resolve獲取模塊的絕對路徑,但并不會加載模塊。

console.log(require.resolve('./01.js'));

require.main獲取入口模塊

console.log(require.main);

require.extensions獲取模塊支持的擴展名

node.js中模塊文件分三種:
1、.js模塊
2、.json文件模塊
3、.node C++擴展二進制模塊

console.log(require.extensions);

node.js通過require加載文件時,比如 require('./user') 會先找 user 文件,然后沒找到,再找 user.js,再找 user.json,再找 user.node。

node.js的模塊分類:

1、核心模塊,編譯二進制,加載速度最快,像 fs,http,events等。

2、文件模塊,保存在硬盤上,加載速度比較慢,通過名稱或路徑來加載。

3、第三方模塊,只指定名稱則從node_modules目錄下加載,查詢的路徑包括module.paths和全局目錄。

全局目錄:

windows中:環(huán)境變量NODE_PATH指定的路徑。

linux中:$HOME/.node_modules和$HOME/.node_libraries目錄

文件模塊查找的規(guī)則,比如 require('./user') :

1、判斷加載的文件是否以絕對路徑加載的。

2、如果是絕對路徑,則直接加載絕對路徑的文件。

3、如果不是,判斷文件有沒有以 './' ,'../' 開頭,如果有則找到該相對路徑,如果沒有則通過modules.paths和全局目錄獲取路徑。

4、嘗試在第3步中的路徑下查找 user 文件。

5、如果沒有找到,則嘗試加擴展名( user.js,user.json,user.node)進行查找。

6、如果還沒有,嘗試根據(jù)包進行查找,user 目錄下,包文件描述 package.json 中 main 配置的文件進行加載。

7、如果沒有 package.json,則查找 user 目錄下, index.js 和 index.node。

8、如果還沒有,則找下一個modules.paths。

9、最后還是沒有找到,則文件加載失敗。

希望本文所述對大家node.js程序設(shè)計有所幫助。

相關(guān)文章

  • Node.js的基本應用你知道多少

    Node.js的基本應用你知道多少

    這篇文章主要為大家詳細介紹了Node.js的基本應用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Nodejs實現(xiàn)用戶注冊功能

    Nodejs實現(xiàn)用戶注冊功能

    本文通過實例代碼給大家介紹了Nodejs實現(xiàn)用戶注冊功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 使用NVM實現(xiàn)不同nodejs版本的自由切換

    使用NVM實現(xiàn)不同nodejs版本的自由切換

    在工作中,我們可能需要同時進行多個不同NodeJS版本的項目開發(fā),這種情況下,對于維護多個版本的node將會是一件非常麻煩的事情,NVM就是為解決這個問題而產(chǎn)生的,本文給出了下載、安裝及使用方法,需要的朋友可以參考下
    2024-02-02
  • 掌握Node.js中的Promise異步編程方式

    掌握Node.js中的Promise異步編程方式

    Node.js中的Promise是一種異步編程方式,可以解決回調(diào)地獄問題,提高代碼可讀性和可維護性。通過掌握Promise的使用方法,可以更好地進行異步編程,避免一些常見的錯誤和陷阱
    2023-05-05
  • 理解nodejs的stream和pipe機制的原理和實現(xiàn)

    理解nodejs的stream和pipe機制的原理和實現(xiàn)

    本篇文章主要介紹了理解nodejs的stream和pipe機制的原理和實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • node.js中的模塊化標準CommonJS與自定義模塊

    node.js中的模塊化標準CommonJS與自定義模塊

    這篇文章介紹了node.js中的模塊化標準CommonJS與自定義模塊,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • nodejs服務內(nèi)存泄露排查過程和優(yōu)化方法

    nodejs服務內(nèi)存泄露排查過程和優(yōu)化方法

    在開發(fā)和部署Node.js應用程序時,內(nèi)存泄露是一個常見的挑戰(zhàn),本文將探討如何對于一個陌生項目進行內(nèi)存排查和優(yōu)化的方法,文章通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • NodeJS實現(xiàn)客戶端js加密

    NodeJS實現(xiàn)客戶端js加密

    本文主要介紹了NodeJS實現(xiàn)客戶端js加密的思路與方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • node.js利用express自動搭建項目的全過程

    node.js利用express自動搭建項目的全過程

    這篇文章主要給大家介紹了關(guān)于node.js利用express自動搭建項目的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • node基于express框架操作Mysql數(shù)據(jù)庫的步驟

    node基于express框架操作Mysql數(shù)據(jù)庫的步驟

    這篇文章主要介紹了node基于express框架操作Mysql數(shù)據(jù)庫的步驟,文章給大家提到安裝mysql模塊和配置mysql模塊的步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論

水富县| 平遥县| 邮箱| 屯昌县| 钟祥市| 吴忠市| 金阳县| 申扎县| 西宁市| 富锦市| 嫩江县| 湖州市| 澄城县| 江永县| 延川县| 邵阳县| 临沧市| 信丰县| 都安| 巫山县| 石狮市| 巴马| 韶关市| 应城市| 克什克腾旗| 陈巴尔虎旗| 阜新| 河津市| 新郑市| 台东市| 临泽县| 广河县| 赣州市| 旬邑县| 通化市| 柳州市| 鲁山县| 韩城市| 巨鹿县| 宝应县| 五华县|