国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

NodeJS學習筆記之Module的簡介

2024-05-06 15:19:28
字體:
來源:轉載
供稿:網(wǎng)友

Node.js模塊系統(tǒng)

Node.js有一個簡單的模塊加載系統(tǒng)。 在Node.js中,文件和模塊是一一對應的(每個文件被視為單獨的模塊)。

例如,考慮下面這個名為 foo.js 的文件:

const circle = require('./circle.js');console.log(`The area of a circle of radius 4 is ${circle.area(4)}`);

在第一行, foo.js 加載與 foo.js 同一目錄的模塊 circle.js 。

circle.js 的內容如下:

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

模塊 circle.js 導出了函數(shù) area() circumference() 。 要將函數(shù)和對象添加到模塊的根目錄,可以將它們賦值到特殊 exports 對象上。

模塊內部的變量一定是私有的,因為模塊被Node.js包裹在一個函數(shù)中(參見下面的模塊包裝器)。 在這個例子中,變量 PI 對于 circle.js 來說是私有變量。

如果你希望模塊導出的是一個函數(shù)(如構造函數(shù)),或者是要導出完整的對象,而不是一次創(chuàng)建一個屬性,則需要將其分配給 module.exports 而不是 exports 。

在下面的 bar.js 中,使用了 square 模塊,它導出一個構造函數(shù):

const square = require('./square.js');var mySquare = square(2);console.log(`The area of my square is ${mySquare.area()}`);

在 square.js 模塊中定義一個 square 方法:

module.exports = (width) => {  return {    area: () => width * width;  };}

此外,模塊系統(tǒng)在 require(“module”) 模塊中實現(xiàn)。

『main』模塊

當某個 module 直接從Node.js運行時,它會將 require.main 設置該 module 。 你可以通過這個來測試這個 module 是被直接運行的還是被 require 的。

require.main === module

就拿文件 foo.js 來說,如果運行 node foo.js 這個屬性就是 true 。運行 require('./foo.js') 就是 false 。

因為 module 提供了一個 filename (通常相當于 __filename ),因此可以通過檢查 require.main.filename 來獲取當前應用程序的入口點。

包管理器的一些提示

Node.js的 require() 函數(shù)支持一些合理的目錄結構。它讓軟件包管理器程序(如 dpkg , rpm 和 npm )可以從Node.js模塊中直接去構建本地的包而不需要修改。

下面我們給出一個可以正常工作的建議目錄結構:

假設我們希望在 /usr/lib/node/<some-package>/<some-version> 中的文件夾來指定版本的包。

此外,包還可以相互依賴。 比如你想安裝 foo 包,而這個包有可能需要安裝指定版本的 bar 包。而 bar 包也很有可能依賴其他的包,并且在某些特殊情況下,這些依賴包甚至可能會產生循環(huán)依賴。

由于Node.js會查找加載的所有模塊的 realpath (即解析軟鏈),然后再去node_modules文件夾中查找依賴的包,因此使用以下方案可以非常簡單地解決此問題:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 宁武县| 界首市| 密云县| 墨竹工卡县| 进贤县| 朔州市| 纳雍县| 香港 | 南雄市| 平乡县| 雅安市| 舞阳县| 天门市| 太仆寺旗| 松桃| 黎川县| 佛冈县| 荔浦县| 南平市| 蓬莱市| 安顺市| 南溪县| 伊宁县| 林周县| 库尔勒市| 铁力市| 右玉县| 化州市| 东至县| 饶阳县| 祁连县| 磐安县| 塘沽区| 无锡市| 桃园县| 哈尔滨市| 饶河县| 溆浦县| 弋阳县| 紫云| 东阿县|