module模塊怎么在node.js中使用

這篇文章給大家介紹module模塊怎么在node.js中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、湟源網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

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

加載流程如下:

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

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

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

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

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

exports 表示模塊的導(dǎo)出對象

require 表示require方法

module 表示當(dāng)前模塊對象

__filename 表示當(dāng)前文件的絕對路徑

__dirname 表示當(dāng)前文件夾的絕對路徑

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

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

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

console.log(module);

module.id 表示模塊的標(biāo)識符。

module.exports 表示模塊的導(dǎo)出對象。

module.parent 表示當(dāng)前模塊的父模塊,當(dāng)前模塊是誰加載的。

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

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

module.children 表示當(dāng)前模塊加載了哪些模塊。

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獲取模塊支持的擴(kuò)展名

node.js中模塊文件分三種:
1、.js模塊
2、.json文件模塊
3、.node C++擴(kuò)展二進(jìn)制模塊

console.log(require.extensions);

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

node.js的模塊分類:

1、核心模塊,編譯二進(jìn)制,加載速度最快,像 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、如果沒有找到,則嘗試加擴(kuò)展名( user.js,user.json,user.node)進(jìn)行查找。

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

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

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

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

關(guān)于module模塊怎么在node.js中使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文題目:module模塊怎么在node.js中使用
標(biāo)題鏈接:http://bm7419.com/article40/pciceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、用戶體驗(yàn)標(biāo)簽優(yōu)化、網(wǎng)站營銷網(wǎng)頁設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)