最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js模塊化的使用詳細介紹

 更新時間:2022年08月24日 17:06:07   作者:薇z  
nodejs中的模塊化是指將每個js文件會被認為單獨一個的模塊。模塊之間是互相不可見的。如果一個模塊需要使用另一個模塊,那么需要通過指定語法來引入要使用的模塊,而且只能使用引入模塊所暴露的內(nèi)容

什么是模塊化

模塊化是指解決一個復(fù)雜問題時,自頂向下逐層把系統(tǒng)劃分成若干模塊的過程。對于整個系統(tǒng)來說,模塊是可組合、分解和更換的單元。

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

編程領(lǐng)域中的模塊化,就是遵守固定的規(guī)則,把一個大文件拆成獨立并互相依賴的多個小模塊。

把代碼進行模塊化拆分的好處:

① 提高了代碼的復(fù)用性

② 提高了代碼的可維護性

③ 可以實現(xiàn)按需加載

模塊化規(guī)范

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

例如:

  • 使用什么樣的語法格式來引用模塊
  • 在模塊中使用什么樣的語法格式向外暴露成員

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

Node.js中的模塊化

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

  • 內(nèi)置模塊(內(nèi)置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)
  • 自定義模塊(用戶創(chuàng)建的每個 .js 文件,都是自定義模塊)
  • 第三方模塊(由第三方開發(fā)出來的模塊,并非官方提供的內(nèi)置模塊,也不是用戶創(chuàng)建的自定義模塊,使用前需要先下載)

加載模塊

使用強大的 require() 方法,可以加載需要的內(nèi)置模塊、用戶自定義模塊、第三方模塊進行使用。例如:

注意:使用 require() 方法加載其它模塊時,會執(zhí)行被加載模塊中的代碼。

Node.js中的模塊作用域

1. 什么是模塊作用域

和函數(shù)作用域類似,在自定義模塊中定義的變量、方法等成員,只能在當前模塊內(nèi)被訪問,這種模塊級別的訪問限制,叫做模塊作用域

2. 模塊作用域的好處

防止了全局變量污染的問題

username打印的是:ls

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

1. module對象

在每個 .js 自定義模塊中都有一個 module 對象,它里面存儲了和當前模塊有關(guān)的信息,打印如下:

2. module.exports對象

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

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

// 在一個自定義模塊中,默認情況下, module.exports = {}
const age = 20
// 向 module.exports 對象上掛載 username 屬性
module.exports.username = 'zs'
// 向 module.exports 對象上掛載 sayHello 方法
module.exports.sayHello = function() {
  console.log('Hello!')
}
module.exports.age = age
// 在外界使用 require 導(dǎo)入一個自定義模塊的時候,得到的成員,
// 就是 那個模塊中,通過 module.exports 指向的那個對象
const m = require('./11.自定義模塊')
console.log(m)

共享成員時的注意點

使用 require() 方法導(dǎo)入模塊時,導(dǎo)入的結(jié)果,永遠以 module.exports 指向的對象為準。

// 在一個自定義模塊中,默認情況下, module.exports = {}
const age = 20
// 向 module.exports 對象上掛載 username 屬性
module.exports.username = 'zs'
// 向 module.exports 對象上掛載 sayHello 方法
module.exports.sayHello = function() {
  console.log('Hello!')
}
module.exports.age = age
// 讓 module.exports 指向一個全新的對象
module.exports = {
  nickname: '小黑',
  sayHi() {
    console.log('Hi!')
  }
}
// 在外界使用 require 導(dǎo)入一個自定義模塊的時候,得到的成員,
// 就是 那個模塊中,通過 module.exports 指向的那個對象
const m = require('./11.自定義模塊')
console.log(m)

exports對象

由于 module.exports 單詞寫起來比較復(fù)雜,為了簡化向外共享成員的代碼,Node 提供了 exports 對象。默認情況下,exports 和 module.exports 指向同一個對象。最終共享的結(jié)果,還是以 module.exports 指向的對象為準。

// console.log(exports)//{}
// console.log(module.exports)//{}
// console.log(exports === module.exports)//true
const username = 'zs'
module.exports.username = username
exports.age = 20
exports.sayHello = function() {
  console.log('大家好!')
}
// 最終,向外共享的結(jié)果,永遠都是 module.exports 所指向的對象
const m = require('./13.exports對象')
console.log(m)

exports和module.exports的使用誤區(qū)

時刻謹記,require() 模塊時,得到的永遠是 module.exports 指向的對象:

注意:為了防止混亂,建議大家不要在同一個模塊中同時使用 exports 和 module.exports

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

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

CommonJS 規(guī)定:

① 每個模塊內(nèi)部,module 變量代表當前模塊。

② module 變量是一個對象,它的 exports 屬性(即 module.exports)是對外的接口。

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

到此這篇關(guān)于Nodejs模塊化的使用詳細介紹的文章就介紹到這了,更多相關(guān)Nodejs模塊化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Express作者TJ告別Node.js奔向Go

    Express作者TJ告別Node.js奔向Go

    TJ自我介紹: TJ Holowaychuk ,程序員兼藝術(shù)家,Koa、Co、Express、jade、mocha、node-canvas、commander.js等知名開源項目的創(chuàng)建和貢獻者。
    2014-07-07
  • Nodejs Express 通過log4js寫日志到Logstash(ELK)

    Nodejs Express 通過log4js寫日志到Logstash(ELK)

    這篇文章主要介紹了Nodejs Express 通過log4js寫日志到Logstash(ELK),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • nodejs 使用 js 模塊的方法實例詳解

    nodejs 使用 js 模塊的方法實例詳解

    這篇文章主要介紹了nodejs 使用 js 模塊的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-12-12
  • Node.js操作MongoDB數(shù)據(jù)庫實例分析

    Node.js操作MongoDB數(shù)據(jù)庫實例分析

    這篇文章主要介紹了Node.js操作MongoDB數(shù)據(jù)庫,結(jié)合實例形式分析了node.js連接MongoDB數(shù)據(jù)庫以及增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • 詳解使用nodeJs安裝Vue-cli

    詳解使用nodeJs安裝Vue-cli

    這篇文章主要介紹了詳解使用nodeJs安裝Vue-cli,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • node.js路徑處理方法以及絕對路徑詳解

    node.js路徑處理方法以及絕對路徑詳解

    這篇文章介紹的是nodejs路徑處理及絕對路徑以及一個Node.js獲取項目根目錄的小技巧,這個內(nèi)容非常實用。有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • Nodejs Express4.x開發(fā)框架隨手筆記

    Nodejs Express4.x開發(fā)框架隨手筆記

    Express: ?web application framework for?Node.js?Express 是一個簡潔、靈活的 node.js Web 應(yīng)用開發(fā)框架, 它提供一系列強大的特性,幫助你創(chuàng)建各種 Web 和移動設(shè)備應(yīng)用,本篇文章給大家介紹nodejs express4.x開發(fā)框架隨手筆記,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • node.js使用cluster實現(xiàn)多進程

    node.js使用cluster實現(xiàn)多進程

    本文給大家詳細介紹了nodejs使用cluster模塊實現(xiàn)多進程的方法和步奏,非常的細致全面,有需要的小伙伴可以參考下
    2016-03-03
  • Node.js獲取本機Mac地址的兩種方案

    Node.js獲取本機Mac地址的兩種方案

    有時候我們的項目中可能會有日志記錄的功能或者其他需要ip的功能,于是這時我們需要獲取用戶的ip地址或mac地址,下面這篇文章主要給大家介紹了關(guān)于Node.js獲取本機Mac地址的兩種方案,需要的朋友可以參考下
    2022-09-09
  • 原生node.js案例--前后臺交互

    原生node.js案例--前后臺交互

    本文主要介紹了原生node.js案例--前后臺交互。本案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服務(wù)器部分。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

蓬安县| 天峨县| 岢岚县| 和静县| 湖北省| 华容县| 海林市| 剑河县| 涿州市| 肇源县| 苏州市| 岱山县| 中江县| 永平县| 乐山市| 上林县| 仙桃市| 全南县| 霍邱县| 香河县| 科技| 昂仁县| 册亨县| 南华县| 丹凤县| 龙山县| 杨浦区| 互助| 榕江县| 饶阳县| 万山特区| 勐海县| 苏尼特左旗| 萨嘎县| 阳曲县| 什邡市| 绥中县| 若尔盖县| 泗洪县| 哈密市| 休宁县|