node.js 16 模塊系統(tǒng)

本文參考原文-http://bjbsair.com/2020-03-22/tech-info/2817.html

const http = require('http')

在node.js中,一個(gè)應(yīng)用程序由若干模塊組成,而這些模塊,我們可以理解為是一個(gè)JavaScript文件,以.js結(jié)尾的文件。

原生模塊

對于上述的'http'是原生模塊,在node.js安裝后是系統(tǒng)自帶的。使用模塊時(shí)只需要通過 require 進(jìn)行引入即可。

在這段代碼中,使用require函數(shù)來引用http模塊,該函數(shù)返回http模塊,將該對象賦值給http之后即可以通過http來訪問http模塊中的屬性及方法。

const http = require('http')

http.createServer(function (request, response) {

//回調(diào)函數(shù)內(nèi)容

}

塊又稱之為核心模塊,常用的核心模塊如下:

  • assert 斷言處理
  • buffer 緩沖數(shù)據(jù)的存儲與轉(zhuǎn)換
  • child_process 子進(jìn)程的創(chuàng)建與管理
  • cluster 多進(jìn)程
  • console 控制臺
  • debugger 內(nèi)置調(diào)試器
  • dns DNS相關(guān)
  • events 事件處理
  • http HTTP服務(wù)器端及客戶端
  • https HTTPS服務(wù)器端及客戶端
  • net TCP服務(wù)端及客戶端
  • os 操作系統(tǒng)信息
  • path 文件路釋
  • querystrmg 處理HTTP請求中使用的查洵字符串
  • repl 實(shí)現(xiàn)REPL(Read-Eval-Print-Loop)
  • zlib 通過zlib類庫來實(shí)現(xiàn)數(shù)據(jù)的壓縮及解壓處理

自定義模塊的導(dǎo)入

在實(shí)際工作中,僅僅使用原生模塊是不夠的,我們需要使用自己團(tuán)隊(duì)定義的其他模塊,也就是.js文件。那么如何進(jìn)行使用?

跟使用原生模塊一樣,也通過require函數(shù),不同的是,需要寫名模塊文件的路徑。

const circle = require('./circle.js');

示例中的circle.js文件就是一個(gè)自定義模塊文件。實(shí)際工作中,往往會在根目錄下建立node_modules目錄,把不同模塊按照業(yè)務(wù)規(guī)則建立對應(yīng)目錄。

exports導(dǎo)出模塊

一個(gè)模塊中的變量和方法只能用于當(dāng)前模塊。如果希望被其他模塊使用,就需要通過exports來導(dǎo)出該模塊的對象,方法,屬性。

接下來我們看一下circle.js的內(nèi)容

const PI = 3.14;  
exports.area = (r) => PI * r ** 2;  
exports.circumference = (r) => 2 * PI * r;  
exports.PI = PI;

上例中我們可以看到這是一個(gè)計(jì)算圓面積和周長的模塊。在模塊中使用了exports導(dǎo)出了

  • 兩個(gè)方法,area(r) 和 circumference(r)
  • 一個(gè)屬性,PI

那么回到我們原先的代碼中,由于我們引入了circle.js,只需要寫出如下代碼就可以進(jìn)行調(diào)用circle.area(r)這個(gè)方法。

const circle = require('./circle.js');  
console.log(`半徑為4的園面積:  ${circle.area(4)}`);  
console.log(`PI =  ${circle.PI}`);

將源文件保存為appCircle.js,運(yùn)行appCircle.js后得到下列結(jié)果

D:\Projects\nodejs\NodeDemo>node appCircle.js

半徑為4的園面積: 50.24

PI = 3.14

將模塊定義為類并導(dǎo)出

上面的例子我們看到了導(dǎo)出模塊的屬性和方法。那么從面向?qū)ο蟮慕嵌龋覀兪欠窨梢詫⒛K定義為類并導(dǎo)出。下面就是一個(gè)示例保存在square.js中。

module.exports = class Square {  
  constructor(width) {  
    this.width = width;  
  }  
  
  area() {  
    return this.width ** 2;  
  }  
};

示例中,可以直接使用"module.exports" 來導(dǎo)出類。導(dǎo)出的類名為Square,是用來計(jì)算平方數(shù)的。該類的構(gòu)建器通過width構(gòu)建,使用方法為area(),返回平方數(shù)。

調(diào)用的時(shí)候我們只需要引入類,然后直接調(diào)用area()方法即可。

const Square = require('./square.js'); //引入類  
const mySquare = new Square(2); //構(gòu)建Square類  
console.log(`平方數(shù): ${mySquare.area()}`); //調(diào)用類方法  

輸出結(jié)果:

D:\Projects\nodejs\NodeDemo>node appSquare.js

平方數(shù): 4

node.js模塊的介紹就到這里。本文參考原文-http://bjbsair.com/2020-03-22/tech-info/2817/

const http = require('http')

在node.js中,一個(gè)應(yīng)用程序由若干模塊組成,而這些模塊,我們可以理解為是一個(gè)JavaScript文件,以.js結(jié)尾的文件。

原生模塊

對于上述的'http'是原生模塊,在node.js安裝后是系統(tǒng)自帶的。使用模塊時(shí)只需要通過 require 進(jìn)行引入即可。

在這段代碼中,使用require函數(shù)來引用http模塊,該函數(shù)返回http模塊,將該對象賦值給http之后即可以通過http來訪問http模塊中的屬性及方法。

const http = require('http')

http.createServer(function (request, response) {

//回調(diào)函數(shù)內(nèi)容

}

塊又稱之為核心模塊,常用的核心模塊如下:

  • assert 斷言處理
  • buffer 緩沖數(shù)據(jù)的存儲與轉(zhuǎn)換
  • child_process 子進(jìn)程的創(chuàng)建與管理
  • cluster 多進(jìn)程
  • console 控制臺
  • debugger 內(nèi)置調(diào)試器
  • dns DNS相關(guān)
  • events 事件處理
  • http HTTP服務(wù)器端及客戶端
  • https HTTPS服務(wù)器端及客戶端
  • net TCP服務(wù)端及客戶端
  • os 操作系統(tǒng)信息
  • path 文件路釋
  • querystrmg 處理HTTP請求中使用的查洵字符串
  • repl 實(shí)現(xiàn)REPL(Read-Eval-Print-Loop)
  • zlib 通過zlib類庫來實(shí)現(xiàn)數(shù)據(jù)的壓縮及解壓處理

自定義模塊的導(dǎo)入

在實(shí)際工作中,僅僅使用原生模塊是不夠的,我們需要使用自己團(tuán)隊(duì)定義的其他模塊,也就是.js文件。那么如何進(jìn)行使用?

跟使用原生模塊一樣,也通過require函數(shù),不同的是,需要寫名模塊文件的路徑。

const circle = require('./circle.js');

示例中的circle.js文件就是一個(gè)自定義模塊文件。實(shí)際工作中,往往會在根目錄下建立node_modules目錄,把不同模塊按照業(yè)務(wù)規(guī)則建立對應(yīng)目錄。

exports導(dǎo)出模塊

一個(gè)模塊中的變量和方法只能用于當(dāng)前模塊。如果希望被其他模塊使用,就需要通過exports來導(dǎo)出該模塊的對象,方法,屬性。

接下來我們看一下circle.js的內(nèi)容

const PI = 3.14;  
exports.area = (r) => PI * r ** 2;  
exports.circumference = (r) => 2 * PI * r;  
exports.PI = PI;

上例中我們可以看到這是一個(gè)計(jì)算圓面積和周長的模塊。在模塊中使用了exports導(dǎo)出了

  • 兩個(gè)方法,area(r) 和 circumference(r)
  • 一個(gè)屬性,PI

那么回到我們原先的代碼中,由于我們引入了circle.js,只需要寫出如下代碼就可以進(jìn)行調(diào)用circle.area(r)這個(gè)方法。

const circle = require('./circle.js');  
console.log(`半徑為4的園面積:  ${circle.area(4)}`);  
console.log(`PI =  ${circle.PI}`);

將源文件保存為appCircle.js,運(yùn)行appCircle.js后得到下列結(jié)果

D:\Projects\nodejs\NodeDemo>node appCircle.js

半徑為4的園面積: 50.24

PI = 3.14

將模塊定義為類并導(dǎo)出

上面的例子我們看到了導(dǎo)出模塊的屬性和方法。那么從面向?qū)ο蟮慕嵌龋覀兪欠窨梢詫⒛K定義為類并導(dǎo)出。下面就是一個(gè)示例保存在square.js中。

module.exports = class Square {  
  constructor(width) {  
    this.width = width;  
  }  
  
  area() {  
    return this.width ** 2;  
  }  
};

示例中,可以直接使用"module.exports" 來導(dǎo)出類。導(dǎo)出的類名為Square,是用來計(jì)算平方數(shù)的。該類的構(gòu)建器通過width構(gòu)建,使用方法為area(),返回平方數(shù)。

調(diào)用的時(shí)候我們只需要引入類,然后直接調(diào)用area()方法即可。

const Square = require('./square.js'); //引入類  
const mySquare = new Square(2); //構(gòu)建Square類  
console.log(`平方數(shù): ${mySquare.area()}`); //調(diào)用類方法  

輸出結(jié)果:

D:\Projects\nodejs\NodeDemo>node appSquare.js

平方數(shù): 4

node.js模塊的介紹就到這里。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 模塊 Node 有簡單的模塊加載系統(tǒng)。在 Node 里,文件和模塊是一一對應(yīng)的。下面例子里,foo.js加載同一個(gè)...
    保川閱讀 691評論 0 0
  • 模塊通常是指編程語言所提供的代碼組織機(jī)制,利用此機(jī)制可將程序拆解為獨(dú)立且通用的代碼單元。所謂模塊化主要是解決代碼分...
    MapleLeafFall閱讀 1,256評論 0 0
  • 1 Node.js模塊的實(shí)現(xiàn) 之前在網(wǎng)上查閱了許多介紹Node.js的文章,可惜對于Node.js的模塊機(jī)制大都著...
    zlx_2017閱讀 1,509評論 0 1
  • 1 Node.js模塊的實(shí)現(xiàn)# 之前在網(wǎng)上查閱了許多介紹Node.js的文章,可惜對于Node.js的模塊機(jī)制大都...
    七寸知架構(gòu)閱讀 2,161評論 1 50
  • 該篇文章來源博客園小火柴的藍(lán)色理想 Commonjs規(guī)范及Node模塊實(shí)現(xiàn)。 與JS比較 ??NodeJS是區(qū)別于...
    小小的開發(fā)人員閱讀 465評論 0 1

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