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

首頁 > 編程 > JavaScript > 正文

Node.js 的模塊知識匯總

2019-11-19 15:47:08
字體:
來源:轉載
供稿:網友

在寫 Node.js 應用程序的時候,你確實可以把所有代碼放在巨大原 index.js 文件中,不在乎你的應用程序會變得多大多復雜。Node.js 解釋器不會在意這個事情。但在代碼組織方面,你很快就會陷入混亂,不能理解代碼,而且難以調試。所以,作為一個人,你應該關心代碼的結構。這就是使用模塊的原因。

你可以把 Node.js 模塊當作 JavaScript 庫 ―― 是整體代碼中你想放在一起的某個部分(比如,函數集),你會想把這部分代碼相對獨立于代碼庫中的其它部分,可以把事情區分清楚。

就們我們把襪子放在衣柜一個抽屜,把襯衣放在衣柜的另一個抽屜 ―― 我們可以把它們組成一天的著裝 ――在代碼庫中,我們將不同的部分保存在不同的模塊中,然后將它們有條不紊地合并成一個應用程序。

內建模塊

即使我們不創造任何 Node.js 模塊,也有模塊可用,因為 Node.js 環境提供了內建模塊。我們已經遇到過一個模塊,就是在博客中尋找如何使用內建的 SHATWG URL 解析器的時候。

在我們自己的代碼文件中,我們需要使用已經存在但是在別處聲明的代碼 ―― 這種情況下,URL類是 Node.js 內置模塊url中的一部分。

var URL = require('url').URL;

require('url')讓我們可以訪問url模塊。這個模塊定義在哪里,是怎么定義的,對我們來說完全不透明 ―― 我們所需要知道的只是它的名稱 ――url―― 以及它公開的屬性,比如URL。

其它內建的模塊直接導出我們需要的屬性(通常是 JavaScript 對象)。以http模塊為例:

var http = require('http');http.createServer(function (req, res) {  res.writeHead(200, {'Content-Type': 'text/html'});  res.end('Hello World!');}).listen(8080);

這里,請求http模塊讓我們可以直接訪問http對象,我們可以直接使用其方法,比如createServer。

Node 初學者這本書講述了如何使用 Node.js 寫一個完整的 Web 服務器,它就是使用的內建http模塊。

外部模塊

內建模塊隨 Node.js 發布,它可以解決很多開發問題,而不需要為每個應用發明新的輪子,但是真正促進 Node.js 編程能力的是由來自 Node.js 社區的開源模塊構建起來的龐大生態系統。這些模塊也可以集成到我們的代碼庫中,但是由于它們不是內置的,并且不會隨每次安裝Node.js 一起安裝,所以只在是我們的代碼中require是不夠的。我們需要先安裝包含外部模塊的代碼庫,由于 NPM,Node Package Manager(Node 包管理器) 的存在,這很容易。

請參博客文章,它以如何使用 async 庫為例來介紹如何使用外部模塊。

此外,Node工匠書還使用了一個章節來介紹了使用 NPM 的細節。

創建你自己的模塊

內建模塊和外部模塊都是別人提供的,但它們不會妨礙你創建自己的 Node.js 模塊。

下面的例子創建了一個名為myRandom的模塊,它會提供了一個輔助函數,用于返回 0 到 10 之間的數。

文件myRandom.js:

function getRandom(min, max) {   return Math.random() * (max - min) + min;}exports.between1and10 = function() {   return getRandom(1, 10);};

你應該把代碼放在自己的myRandom.js文件中。由于此文件存在,并通過exports向外提供屬性,另一個文件index.js可以使用導出的功能:

文件index.js:

var myRandom = require('./myRandom.js');console.log(myRandom.between1and10());

require再次發揮作用,它讓本地myRandom模塊中導出的屬性生效 ―― 在這里是指between1and10函數。

注意:雖然模塊系統允許公開模塊的功能,但它也允許隱藏在模塊之外不會用到的功能,只要不通過exports導出就好。即使index.js文件請求了myRandom.js文件,它也不能訪問未導出的getRandom函數:

var myRandom = require('./myRandom.js');console.log(myRandom.getRandom(5, 99));

這會導致 TypeError: myRandom.getRandom is not a function.

通過將實現細節隱藏在模塊中,只暴露出需要在其它代碼中使用的部分,可以很好的組織你的代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖市| 英吉沙县| 黑山县| 黔西| 明水县| 剑川县| 乌海市| 鸡泽县| 宁陵县| 武冈市| 齐河县| 双桥区| 阳春市| 雷州市| 邓州市| 阜阳市| 沙河市| 枝江市| 武城县| 青神县| 阿尔山市| 昆明市| 巍山| 许昌县| 余庆县| 星座| 舒兰市| 贵阳市| 寻甸| 修文县| 闽侯县| 水富县| 抚远县| 泗洪县| 全南县| 大埔区| 兰西县| 玉田县| 霍林郭勒市| 华阴市| 徐水县|