国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nodejs三、模塊化

這篇具有很好參考價(jià)值的文章主要介紹了Nodejs三、模塊化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

零、文章目錄

Nodejs三、模塊化

1、模塊化的基本概念

(1)模塊化是什么
  • 模塊化是指解決一個(gè)復(fù)雜問題時(shí),自頂向下逐層把系統(tǒng)劃分成若干模塊的過程。對(duì)于整個(gè)系統(tǒng)來說,模塊是可組合、分解和更換的單元。
(2)編程領(lǐng)域中的模塊化
  • 編程領(lǐng)域中的模塊化,就是遵守固定的規(guī)則,把一個(gè)大文件拆成獨(dú)立并互相依賴多個(gè)小模塊。

  • 把代碼進(jìn)行模塊化拆分的好處:

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

    • 提高了代碼的可維護(hù)性

    • 可以實(shí)現(xiàn)按需加載

(3)模塊化規(guī)范
  • 模塊化規(guī)范:對(duì)代碼進(jìn)行模塊化的拆分與組合時(shí),需要遵守的那些規(guī)則。例如:使用什么樣的語法格式來引用模塊,在模塊中使用什么樣的語法格式向外暴露成員。

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

2、Node.js 中模塊化

(1)Node.js 中模塊的分類
  • Node.js 中根據(jù)模塊來源的不同,將模塊分為了 3 大類,分別是:
    • 內(nèi)置模塊:(內(nèi)置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)
    • 自定義模塊:(用戶創(chuàng)建的每個(gè) .js 文件,都是自定義模塊)
    • 第三方模塊:(由第三方開發(fā)出來的模塊,并非官方提供的內(nèi)置模塊,也不是用戶創(chuàng)建的自定義模塊,使用前需要先下載
(2)加載模塊
  • 使用強(qiáng)大的 require() 方法,可以加載需要的內(nèi)置模塊、用戶自定義模塊、第三方模塊進(jìn)行使用。

  • 使用 require() 方法加載其它模塊時(shí),會(huì)執(zhí)行被加載模塊中的代碼。

//1.加內(nèi)置的fs模塊
const fs = require('fs')

//2.加載用戶的自定義模塊
const custom = require('./02.custom.js')

//3.加第三方模塊
const moment = require('moment')
(3)Node.js 中的模塊作用域
  • 模塊作用域:和函數(shù)作用域類似,在自定義模塊中定義的變量、方法等成員,只能在當(dāng)前模塊內(nèi)被訪問,這種模塊級(jí)別的訪問限制,叫做模塊作用域。
  • 模塊作用域的好處:防止了全局變量污染的問題

Nodejs三、模塊化

(4)共享模塊中的成員
  • module對(duì)象:在每個(gè) .js 自定義模塊中都有一個(gè) module 對(duì)象,它里面存儲(chǔ)了和當(dāng)前模塊有關(guān)的信息,打印如下:

Nodejs三、模塊化

  • module.exports對(duì)象
    • 在自定義模塊中,可以使用 module.exports 對(duì)象,將模塊內(nèi)的成員共享出去,供外界使用。
    • 外界用 require() 方法導(dǎo)入自定義模塊時(shí),得到的就是 module.exports 所指向的對(duì)象。
    • 使用 require() 方法導(dǎo)入模塊時(shí),導(dǎo)入的結(jié)果,永遠(yuǎn)以 module.exports 指向的對(duì)象為準(zhǔn)

Nodejs三、模塊化

  • exports對(duì)象:由于 module.exports 單詞寫起來比較復(fù)雜,為了簡化向外共享成員的代碼,Node 提供了 exports 對(duì)象。默認(rèn)情況下,exports和module.exports 指向同一個(gè)對(duì)象。

Nodejs三、模塊化

  • exports和 module.exports的使用誤區(qū)
    • 時(shí)刻謹(jǐn)記,require() 模塊時(shí),得到的永遠(yuǎn)是 module.exports 指向的對(duì)象
    • 為了防止混亂,建議大家不要在同一個(gè)模塊中同時(shí)使用 exportsmodule.exports

Nodejs三、模塊化文章來源地址http://www.zghlxwxcb.cn/news/detail-491133.html

(5)Node.js 中的模塊化規(guī)范
  • Node.js 遵循了 CommonJS 模塊化規(guī)范,CommonJS 規(guī)定了模塊的特性和各模塊之間如何相互依賴。
  • CommonJS 規(guī)定:
    • 每個(gè)模塊內(nèi)部,module變量代表當(dāng)前模塊。
    • module變量是一個(gè)對(duì)象, module.exports對(duì)外的接口。
    • require() 方法加載某個(gè)模塊,其實(shí)是加載該模塊的 module.exports 屬性。

3、模塊的加載機(jī)制

(1)優(yōu)先從緩存中加載
  • 模塊在第一次加載后會(huì)被緩存。 這也意味著多次調(diào)用 require() 不會(huì)導(dǎo)致模塊的代碼被執(zhí)行多次。
  • 不論是內(nèi)置模塊、用戶自定義模塊、還是第三方模塊,它們都會(huì)優(yōu)先從緩存中加載,從而提高模塊的加載效率。
(2)內(nèi)置模塊的加載機(jī)制
  • 內(nèi)置模塊是由 Node.js 官方提供的模塊,內(nèi)置模塊的加載優(yōu)先級(jí)最高。
  • 例如,require(‘fs’) 始終返回內(nèi)置的 fs 模塊,即使在 node_modules 目錄下有名字相同的包也叫做 fs。
(3)自定義模塊的加載機(jī)制
  • 使用 require() 加載自定義模塊時(shí),必須指定以 ./ 或 …/ 開頭的路徑標(biāo)識(shí)符。在加載自定義模塊時(shí),如果沒有指定 ./ 或 …/ 這樣的路徑標(biāo)識(shí)符,則 node 會(huì)把它當(dāng)作內(nèi)置模塊第三方模塊進(jìn)行加載。
  • 同時(shí),在使用 require() 導(dǎo)入自定義模塊時(shí),如果省略了文件的擴(kuò)展名,則 Node.js 會(huì)按順序分別嘗試加載以下的文件:
    • 按照確切的文件名進(jìn)行加載
    • 補(bǔ)全 .js 擴(kuò)展名進(jìn)行加載
    • 補(bǔ)全 .json 擴(kuò)展名進(jìn)行加載
    • 補(bǔ)全 .node 擴(kuò)展名進(jìn)行加載
    • 加載失敗,終端報(bào)錯(cuò)
(4)第三方模塊的加載機(jī)制
  • 如果傳遞給 require() 的模塊標(biāo)識(shí)符不是一個(gè)內(nèi)置模塊,也沒有以 ‘./’ 或 ‘…/’ 開頭,則 Node.js 會(huì)從當(dāng)前模塊的父目錄開始,嘗試從 /node_modules 文件夾中加載第三方模塊。
  • 如果沒有找到對(duì)應(yīng)的第三方模塊,則移動(dòng)到再上一層父目錄中,進(jìn)行加載,直到文件系統(tǒng)的根目錄。
  • 例如,假設(shè)在 ‘C:\Users\ly\project\foo.js’ 文件里調(diào)用了 require(‘tools’),則 Node.js 會(huì)按以下順序查找:
    • C:\Users\ly\project\node_modules\tools
    • C:\Users\ly\node_modules\tools
    • C:\Users\node_modules\tools
    • C:\node_modules\tools
(5)目錄作為模塊
  • 當(dāng)把目錄作為模塊標(biāo)識(shí)符,傳遞給 require() 進(jìn)行加載的時(shí)候,有三種加載方式:
    • 在被加載的目錄下查找一個(gè)叫做 package.json 的文件,并尋找 main 屬性,作為 require() 加載的入口
    • 如果目錄里沒有 package.json 文件,或者 main 入口不存在或無法解析,則 Node.js 將會(huì)試圖加載目錄下的 index.js 文件。
    • 如果以上兩步都失敗了,則 Node.js 會(huì)在終端打印錯(cuò)誤消息,報(bào)告模塊的缺失:Error: Cannot find module ‘xxx’

到了這里,關(guān)于Nodejs三、模塊化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端進(jìn)階之——模塊化

    前端進(jìn)階之——模塊化

    ? ? ? ? 在做項(xiàng)目的時(shí)候越來越發(fā)現(xiàn)模塊化的重要性,做好模塊化開發(fā)不僅給后期的維護(hù)帶來不少好處而且大大提升項(xiàng)目開發(fā)效率,接下來整理一下模塊化相關(guān)知識(shí)吧。 封裝方法、提高代碼的復(fù)用性、可維護(hù)性和可讀性 隔離作用域,避免污染全局作用域 避免變量沖突 立即執(zhí)

    2024年02月10日
    瀏覽(93)
  • OpenHarmony模塊化編譯

    OpenHarmony模塊化編譯

    OpenHarmony版本:OpenHarmony 4.0 Release 編譯環(huán)境:WSL2 Ubuntu 18.04 平臺(tái)設(shè)備:RK3568 OpenHarmony 代碼構(gòu)建有build.sh和hb兩種方式: 下拉的4.0代碼無法直接使用hb命令 可參考搭建開發(fā)環(huán)境-安裝編譯工具 進(jìn)行hb安裝和環(huán)境配置。 在源碼目錄執(zhí)行\(zhòng)\\"hb help\\\",界面打印以下信息即表示安裝成功。 注

    2024年02月03日
    瀏覽(61)
  • js 模塊化

    模塊化主要是用來抽離公共代碼,隔離作用域,避免變量沖突等。 模塊化的整個(gè)發(fā)展歷史如下: IIFE :使用自執(zhí)行函數(shù)來編寫模塊化,特點(diǎn):在一個(gè)單獨(dú)的函數(shù)作用域中執(zhí)行代碼,避免代碼沖突。 AMD :使用 require 來編寫模塊化,特點(diǎn):依賴必須提前聲明好。 CMD :使用 seaJS

    2024年02月14日
    瀏覽(19)
  • 模塊化規(guī)范

    模塊化規(guī)范

    常用模塊化有兩種規(guī)范,commonJS和ES6 我們常遇到的使用場景是,在commonJS的模塊里需要引入ES6規(guī)范的模塊。這時(shí)就需要把ES6模塊轉(zhuǎn)譯為commonJS規(guī)范的模塊,否則報(bào)錯(cuò) 轉(zhuǎn)義工具有: Babel:Babel 是一個(gè)流行的 JavaScript 編譯器,它可以將 ES6 模塊轉(zhuǎn)譯為 CommonJS 模塊。你可以使用 Bab

    2024年02月15日
    瀏覽(26)
  • JS模塊化系統(tǒng)

    隨著 JavaScript 開發(fā)變得越來越廣泛,命名空間和依賴關(guān)系變得越來越難以處理。人們已經(jīng)開發(fā)出不同的解決方案以模塊系統(tǒng)的形式來解決這個(gè)問題。 CommonJS 是一種同步加載模塊的規(guī)范,主要用于服務(wù)器端的 Node.js 環(huán)境。 top:CommonJS 加載的是一個(gè)對(duì)象(即 module.exports 屬性),

    2024年02月19日
    瀏覽(26)
  • 前端模塊化

    前端模塊化

    ? 隨著前端應(yīng)用的日益復(fù)雜,我們的項(xiàng)目代碼已經(jīng)逐漸膨脹到了不得不花大量時(shí)間去管理的程度了。而模塊化就是一種最主流的代碼組織方式,它通過把復(fù)雜的代碼按照功能的不同劃分為不同的模塊單獨(dú)維護(hù),從而提高開發(fā)效率、降低維護(hù)成本。模塊化可以使你能夠更容易地

    2024年02月08日
    瀏覽(116)
  • Vuex模塊化管理

    Vuex模塊化管理

    如果你的項(xiàng)目是一個(gè)小型項(xiàng)目,就用不著使用模塊化; 但是,如果你參與的項(xiàng)目是一個(gè)中大型項(xiàng)目,那Vuex模塊化,必不可少,否則整個(gè)文件很臃腫,也很難管理。 通過模塊化管理:各自模塊下都有自己的state及方法,各自模塊管理自己的數(shù)據(jù),這樣不容易造成混亂。 第一步

    2024年02月15日
    瀏覽(22)
  • 解構(gòu)模塊化區(qū)塊鏈

    在可擴(kuò)展性方面,模塊化區(qū)塊鏈?zhǔn)菂^(qū)塊鏈設(shè)計(jì)的最新范式。 模塊化的概念起源于Layer1區(qū)塊鏈Celestia,現(xiàn)在這個(gè)概念也逐漸被更多的人所關(guān)注,還有人甚至提出”模塊化區(qū)塊鏈將定義Web3創(chuàng)新的下一個(gè)十年“的口號(hào)。 但是,到底什么是模塊化區(qū)塊鏈,它到底能解決什么問題,它

    2024年02月01日
    瀏覽(24)
  • 模塊化

    模塊化

    能夠說出模塊化的好處 能夠知道CommonJS規(guī)定了哪些內(nèi)容 能夠說出Node.js中模塊的三大分類各自是什么 能夠使用npm管理包 能夠了解什么是規(guī)范的包結(jié)構(gòu) 能夠了解模塊的加載機(jī)制 模塊化的基本概念 Node.js中模塊的分類 npm與包 模塊的加載機(jī)制 1.1什么是模塊化 模塊化 是指解決一個(gè)

    2024年02月06日
    瀏覽(12)
  • webpack(一)模塊化

    webpack(一)模塊化

    階段一:基于文件的劃分模塊方式 概念 :將每個(gè)功能和相關(guān)數(shù)據(jù)狀態(tài)分別放在單獨(dú)的文件里 約定每一個(gè)文件就是一個(gè)單獨(dú)的模塊,使用每個(gè)模塊,直接調(diào)用這個(gè)模塊的成員 缺點(diǎn) :所有的成員都可以在模塊外被訪問和修改(所有的模塊都是直接在全局工作,沒有【私有空間

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包