欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

加載流程如下:

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

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

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

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

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

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

require 表示require方法

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

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

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

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

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

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

console.log(module);

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

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

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

module.filename 表示模塊的絕對(duì)路徑。

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

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

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

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

console.log(require.cache);

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

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

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') 會(huì)先找 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、判斷加載的文件是否以絕對(duì)路徑加載的。

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

3、如果不是,判斷文件有沒有以 './' ,'../' 開頭,如果有則找到該相對(duì)路徑,如果沒有則通過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、如果還沒有,則找下一個(gè)modules.paths。

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

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

相關(guān)文章

  • Thinkjs3新手入門之如何使用靜態(tài)資源目錄

    Thinkjs3新手入門之如何使用靜態(tài)資源目錄

    最近在學(xué)習(xí)thinkjs3,發(fā)現(xiàn)有些地方還是有必要整理下的,下面這篇文章主要給大家介紹了關(guān)于Thinkjs3新手入門之如何使用靜態(tài)資源目錄的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻

    Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻

    傳統(tǒng)的視頻轉(zhuǎn)碼中,很常用的工具是FFmpeg,本文主要介紹了Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Ubuntu 16.04 64位中搭建Node.js開發(fā)環(huán)境教程

    Ubuntu 16.04 64位中搭建Node.js開發(fā)環(huán)境教程

    如果想要在Ubuntu 16.04上安裝Node.js的話,這篇文章對(duì)你來說肯定很重要。Node.js從本質(zhì)上來說就是一個(gè)運(yùn)行在服務(wù)端上的封裝好了輸入輸出流的javascript程序。本文給大家詳細(xì)介紹了在Ubuntu 16.04 64位搭建Node.js開發(fā)環(huán)境的步驟,有需要的朋友們可以參考學(xué)習(xí)。
    2016-10-10
  • node.js實(shí)現(xiàn)的裝飾者模式示例

    node.js實(shí)現(xiàn)的裝飾者模式示例

    這篇文章主要介紹了node.js實(shí)現(xiàn)的裝飾者模式,簡單說明了裝飾者模式的原理、功能并結(jié)合實(shí)例形式給出了node.js裝飾者模式的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • npm?i報(bào)錯(cuò)以及解決方案實(shí)戰(zhàn)案例

    npm?i報(bào)錯(cuò)以及解決方案實(shí)戰(zhàn)案例

    npm在前端開發(fā)流程中提供了非常完善的自動(dòng)化工具鏈,但是同樣由于其復(fù)雜性導(dǎo)致有很多奇奇怪怪的問題,下面這篇文章主要給大家介紹了關(guān)于npm?i報(bào)錯(cuò)以及解決方案的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Node.js?中常用內(nèi)置模塊(path?路徑模塊)

    Node.js?中常用內(nèi)置模塊(path?路徑模塊)

    這篇文章主要介紹了Node.js?中常用內(nèi)置模塊(path?路徑模塊),文章圍繞主題展開詳細(xì)的相關(guān)介紹,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2022-09-09
  • Node.js web 應(yīng)用如何封裝到Docker容器中

    Node.js web 應(yīng)用如何封裝到Docker容器中

    這篇文章主要介紹了Node.js web 應(yīng)用如何封裝到Docker容器中,幫助大家更好的學(xué)習(xí)node.js和使用docker容器,感興趣的朋友可以了解下
    2020-09-09
  • Node.js返回JSONP詳解

    Node.js返回JSONP詳解

    下面小編就為大家?guī)硪黄狽ode.js返回JSONP詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本

    Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本

    ubuntu默認(rèn)安裝的nodejs版本比較老,要安裝到最新的,下面這篇文章主要給大家介紹了關(guān)于Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • nodejs搭建本地http服務(wù)器教程

    nodejs搭建本地http服務(wù)器教程

    本篇文章主要介紹了nodejs搭建本地http服務(wù)器教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03

最新評(píng)論