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

Node.js 的模塊知識匯總

 更新時間:2017年08月16日 08:41:19   作者:邊城  
node.js中是通過模塊來劃分為單位來劃分所有功能的。每個模塊為一個js文件。每個模塊中定義的全局變量或函數(shù)的作用范圍也被限制在這個模塊中,只能用exports對象將其傳遞到外部。

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

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

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

內(nèi)建模塊

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

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

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

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

其它內(nèi)建的模塊直接導(dǎo)出我們需要的屬性(通常是 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 初學(xué)者這本書講述了如何使用 Node.js 寫一個完整的 Web 服務(wù)器,它就是使用的內(nèi)建http模塊。

外部模塊

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

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

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

創(chuàng)建你自己的模塊

內(nèi)建模塊和外部模塊都是別人提供的,但它們不會妨礙你創(chuàng)建自己的 Node.js 模塊。

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

文件myRandom.js:

function getRandom(min, max) {
   return Math.random() * (max - min) + min;
}

exports.between1and10 = function() {
   return getRandom(1, 10);
};



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

文件index.js:

var myRandom = require('./myRandom.js');

console.log(myRandom.between1and10());



require再次發(fā)揮作用,它讓本地myRandom模塊中導(dǎo)出的屬性生效 —— 在這里是指between1and10函數(shù)。

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

var myRandom = require('./myRandom.js');

console.log(myRandom.getRandom(5, 99));

這會導(dǎo)致 TypeError: myRandom.getRandom is not a function.

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

相關(guān)文章

  • node.js解決全局安裝pnpm后無法使用的問題

    node.js解決全局安裝pnpm后無法使用的問題

    在全局安裝pnpm后,如果出現(xiàn)無法使用的問題,一般是由于沒有添加系統(tǒng)變量導(dǎo)致的,本文就來介紹一下node.js解決全局安裝pnpm后無法使用的問題,感興趣的可以了解一下
    2024-10-10
  • Node.js?模塊的加載邏輯你了解嘛

    Node.js?模塊的加載邏輯你了解嘛

    這篇文章主要為大家介紹了Node.js?模塊的加載邏輯,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 我的Node.js學(xué)習(xí)之路(二)NPM模塊管理

    我的Node.js學(xué)習(xí)之路(二)NPM模塊管理

    npm 是 Node.js 的模塊依賴管理工具。作為開發(fā)者使用的工具,主要解決開發(fā) Node.js 時會遇到的問題。如同 RubyGems 對于 Ruby 開發(fā)者和 Maven 對于 Java 開發(fā)者的重要性,npm 對與 Node.js 的開發(fā)者和社區(qū)的重要性不言而喻。
    2014-07-07
  • nodeJS刪除文件方法示例

    nodeJS刪除文件方法示例

    這篇文章主要介紹了nodeJS刪除文件方法,結(jié)合實例形式分析了nodeJS實現(xiàn)文件與目錄的獲取、遍歷與刪除相關(guān)操作技巧,需要的朋友可以參考下
    2016-12-12
  • NodeJS爬蟲實例之糗事百科

    NodeJS爬蟲實例之糗事百科

    本篇文章主要給大家講解了一下用NodeJS學(xué)習(xí)爬蟲,并通過爬糗事百科來講解用法和效果,一起學(xué)習(xí)下吧。
    2017-12-12
  • 新入門node.js必須要知道的概念(必看篇)

    新入門node.js必須要知道的概念(必看篇)

    下面小編就為大家?guī)硪黄氯腴Tnode.js必須要知道的概念(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Centos7 中安裝 Node.js v4.4.4

    Centos7 中安裝 Node.js v4.4.4

    我一直對學(xué)習(xí)Node.js比較感興趣。這是一個Java平臺的服務(wù)器端編程 ,它允許開發(fā)人員在服務(wù)器編寫Java代碼,并且有許多CentOS的用戶正努力學(xué)習(xí)這個語言的開發(fā)環(huán)境。這正是我想做這個教程的目的。
    2016-11-11
  • node.js基于express使用websocket的方法

    node.js基于express使用websocket的方法

    這篇文章主要介紹了node.js基于express使用websocket的方法,結(jié)合實例形式分析了node.js基于express調(diào)用websocket相關(guān)設(shè)置與使用操作技巧,需要的朋友可以參考下
    2017-11-11
  • 為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置

    為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置

    這篇文章主要介紹了為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 淺談Koa服務(wù)限流方法實踐

    淺談Koa服務(wù)限流方法實踐

    本篇文章主要介紹了淺談Koa服務(wù)限流方法實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論