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

詳解Node.js中的模塊化方法

 更新時(shí)間:2022年01月12日 14:45:49   作者:s_kzn  
這篇文章主要為大家介紹了Node.js的模塊化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

一、模塊化的基本概念

1、什么是模塊化

模塊化是指解決一個(gè)復(fù)雜問(wèn)題時(shí),自頂向下逐層把系統(tǒng)劃分成若干模塊的過(guò)程。對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō),模塊是可組合、分解和更換的單元。

編程領(lǐng)域中的模塊化

就是遵守固定的規(guī)則,把一個(gè)大文件拆成獨(dú)立并互相依賴(lài)的多個(gè)小模塊。 把代碼進(jìn)行模塊化拆分的好處:

  • 提高了代碼的復(fù)用性
  • 提高了代碼的可維護(hù)性
  • 可以實(shí)現(xiàn)按需加載

2、模塊化規(guī)范

模塊化規(guī)范就是對(duì)代碼進(jìn)行模塊化的拆分與組合時(shí),需要遵守的那些規(guī)則。

例如:

  • 使用什么樣的語(yǔ)法格式來(lái)引用模塊
  • 在模塊中使用什么樣的語(yǔ)法格式向外暴露成員

模塊化規(guī)范的好處

大家都遵守同樣的模塊化規(guī)范寫(xiě)代碼,降低了溝通的成本,極大方便了各個(gè)模塊之間的相互調(diào)用,利人利己。

二、Node.js 中的模塊化

1、Node.js 中的模塊化分類(lèi)

Node.js 中根據(jù)模塊來(lái)源的不同,將模塊分為了 3 大類(lèi),分別是:

內(nèi)置模塊(內(nèi)置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)  

自定義模塊(用戶(hù)創(chuàng)建的每個(gè) .js 文件,都是自定義模塊)  

第三方模塊(由第三方開(kāi)發(fā)出來(lái)的模塊,并非官方提供的內(nèi)置模塊,也不是用戶(hù)創(chuàng)建的自定義模塊,使用前需要先下載)

2、加載模塊

使用 require() 方法,可以加載需要的內(nèi)置模塊、用戶(hù)自定義模塊、第三方模塊進(jìn)行使用。

// 1、加載內(nèi)置fs模塊
const fs = require('fs')
//2、加載自定義模塊
const tre = require('./tre.js')
//3、加載第三方模塊
const moment=require('moment')

3、向外共享模塊作用域中的成員

module.exports 對(duì)象:

在每個(gè) .js 自定義模塊中都有一個(gè) module 對(duì)象,它里面存儲(chǔ)了和當(dāng)前模塊有關(guān)的信息。

在自定義模塊中,可以使用 module.exports 對(duì)象,將模塊內(nèi)的成員共享出去,供外界使用。

外界用 require() 方法導(dǎo)入自定義模塊時(shí),得到的就是 module.exports 所指向的對(duì)象。

4、Node.js 中的模塊化規(guī)范

(1)什么是CommonJS模塊規(guī)范

  • CommonJS 是一套代碼規(guī)范, 目的是為了構(gòu)建 JavaScript 在瀏覽器之外的生態(tài)系統(tǒng) (服務(wù)器端, 桌面端).
  • 通過(guò)該規(guī)范使JavaScript具備開(kāi)發(fā)復(fù)雜應(yīng)用、跨平臺(tái)的能力

Node.js 遵循了 CommonJS 模塊化規(guī)范,CommonJS 規(guī)定了模塊的特性和各模塊之間如何相互依賴(lài)。

(2)CommonJS 模塊化規(guī)范

CommonJS模塊規(guī)范化的內(nèi)容
導(dǎo)出模塊:moudle.exports 導(dǎo)出模塊
導(dǎo)入模塊:require('模塊名稱(chēng)')

CommonJS 規(guī)定:

1.每個(gè)模塊內(nèi)部,module 變量代表當(dāng)前模塊。

2.module 變量是一個(gè)對(duì)象,它的 exports 屬性(即 module.exports)是對(duì)外的接口。

3.加載某個(gè)模塊,其實(shí)是加載該模塊的 module.exports 屬性。require() 方法用于加載模塊。

(3)每個(gè)導(dǎo)出的模塊都有一個(gè)moudle對(duì)象,該對(duì)象包含的屬性有:

moudle.exports表示當(dāng)前模塊對(duì)外輸出的接口,其他模塊引用的是moudle.exports導(dǎo)出的變量
exports變量指向moudle.exports,為了操作的方便,它不能直接指向一個(gè)值

(4)使用require導(dǎo)入模塊:導(dǎo)入并執(zhí)行一個(gè)JavaScript文件,返回的是一個(gè)exports對(duì)象,若沒(méi)有找到相應(yīng)的對(duì)象就報(bào)錯(cuò)    

  • 模塊輸出是一個(gè)函數(shù),則該函數(shù)的輸出接口不能用exports變量來(lái)導(dǎo)出必須用戶(hù)moudle.exports導(dǎo)出
  • 加載規(guī)則:

A、用來(lái)加載js文件,默認(rèn)的文件擴(kuò)展名為.js

B、根據(jù)參數(shù)的不同格式,去不同路徑下查找相應(yīng)的js文件

'./(../)':表示加載路徑是相對(duì)路徑              

'/':表示加載路徑是絕對(duì)路徑              

既不是'./(../)'也不是'/':表示加載的模式是node的核心模塊,在node安裝路徑的node_modules中              

  • require的內(nèi)部處理的流程

require -->module.exports-->moudle._load 

三、npm 與 包

1、包的概念

什么是包?

Node.js 中的第三方模塊又叫做包。 就像電腦和計(jì)算機(jī)指的是相同的東西,第三方模塊和包指的是同一個(gè)概念,只不過(guò)叫法不同。

包的來(lái)源?

不同于 Node.js 中的內(nèi)置模塊與自定義模塊,包是由第三方個(gè)人或團(tuán)隊(duì)開(kāi)發(fā)出來(lái)的,免費(fèi)供所有人使用。 注意:Node.js 中的包都是免費(fèi)且開(kāi)源的,不需要付費(fèi)即可免費(fèi)下載使用。

為什么需要包?

由于 Node.js 的內(nèi)置模塊僅提供了一些底層的 API,導(dǎo)致在基于內(nèi)置模塊進(jìn)行項(xiàng)目開(kāi)發(fā)的時(shí),效率很低。 包是基于內(nèi)置模塊封裝出來(lái)的,提供了更高級(jí)、更方便的 API,極大的提高了開(kāi)發(fā)效率。 包和內(nèi)置模塊之間的關(guān)系,類(lèi)似于 jQuery 和 瀏覽器內(nèi)置 API 之間的關(guān)系。

2、包的安裝與卸載

npm 包的安裝——

npm install 包的完整名稱(chēng)

npm 包的卸載——

npm uninstall 包的完整名稱(chēng)

安裝指定保本的包——

默認(rèn)情況下,使用 npm install 命令安裝包的時(shí)候,會(huì)自動(dòng)安裝最新版本的包。如果需要安裝指定版本的包,可以在包名之后,通過(guò) @ 符號(hào)指定具體的版本,例如

npm install moment@2.12.1

3、包管理配置文件

npm 規(guī)定,在項(xiàng)目根目錄中,必須提供一個(gè)叫做 package.json 的包管理配置文件。用來(lái)記錄與項(xiàng)目有關(guān)的一些配置信息。例如:

  • 項(xiàng)目的名稱(chēng)、版本號(hào)、描述等
  • 項(xiàng)目中都用到了哪些包
  • 哪些包只在開(kāi)發(fā)期間會(huì)用到
  • 哪些包在開(kāi)發(fā)和部署時(shí)都需要用到

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • node中IO以及定時(shí)器優(yōu)先級(jí)詳解

    node中IO以及定時(shí)器優(yōu)先級(jí)詳解

    這篇文章主要給大家介紹了關(guān)于node中IO以及定時(shí)器優(yōu)先級(jí)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 三步教你完成切換nodejs版本

    三步教你完成切換nodejs版本

    nvm是一個(gè)node的版本管理工具,可以簡(jiǎn)單操作node版本的切換、安裝、查看,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)三步完成切換nodejs版本的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 淺談node.js中間件有哪些類(lèi)型

    淺談node.js中間件有哪些類(lèi)型

    這篇文章主要介紹了node.js中間件有哪些類(lèi)型,對(duì)中間件感興趣的同學(xué),可以參考下
    2021-04-04
  • pm2工具在Node.js開(kāi)發(fā)部署中的重要作用詳解

    pm2工具在Node.js開(kāi)發(fā)部署中的重要作用詳解

    這篇文章主要為大家介紹了pm2工具在Node.js開(kāi)發(fā)部署中的重要作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件)

    nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件)

    本篇文章主要介紹了nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Node.js基于cors解決接口跨域的問(wèn)題(推薦)

    Node.js基于cors解決接口跨域的問(wèn)題(推薦)

    這篇文章主要介紹了Node.js基于cors解決接口跨域的問(wèn)題,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • node.js中的console.info方法使用說(shuō)明

    node.js中的console.info方法使用說(shuō)明

    這篇文章主要介紹了node.js中的console.info方法使用說(shuō)明,本文介紹了console.info的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs redis 發(fā)布訂閱機(jī)制封裝實(shí)現(xiàn)方法及實(shí)例代碼

    nodejs redis 發(fā)布訂閱機(jī)制封裝實(shí)現(xiàn)方法及實(shí)例代碼

    這篇文章主要介紹了nodejs redis 發(fā)布訂閱機(jī)制封裝的相關(guān)資料,這里提供了實(shí)現(xiàn)方法,及實(shí)例代碼,具有參考價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Nest.js參數(shù)校驗(yàn)和自定義返回?cái)?shù)據(jù)格式詳解

    Nest.js參數(shù)校驗(yàn)和自定義返回?cái)?shù)據(jù)格式詳解

    這篇文章主要給大家介紹了關(guān)于Nest.js參數(shù)校驗(yàn)和自定義返回?cái)?shù)據(jù)格式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • node?NPM庫(kù)qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢(xún)學(xué)習(xí)

    node?NPM庫(kù)qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢(xún)學(xué)習(xí)

    這篇文章主要為大家介紹了node?NPM庫(kù)之qs解析URL查詢(xún)字符串及iconv-lite字符串編碼轉(zhuǎn)換學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論