日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Node — 第三天

發(fā)布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node — 第三天 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

模塊化

什么是模塊化

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

生活中的模塊化

編程中的模塊化

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

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

  • 提高了代碼的復用性
  • 提高了代碼的可維護性
  • 可以實現(xiàn)按需加載
  • etc…

模塊化規(guī)范

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

例如:

  • 使用什么樣的語法格式來引用模塊 (require(‘fs’))
  • 在模塊中使用什么樣的語法格式向外暴露成員 (目前沒有學習,馬上學習)

模塊化規(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)建的自定義模塊,使用前需要先下載)

加載模塊

// 加載核心模塊 const fs = require('fs');// 加載第三方模塊 const express = require('express');// 加載自定義模塊 const custom = require('./custom');

使用 require() 加載模塊后,會緩存起來,下次再調(diào)用 require()加載相同模塊的時候,直接使用緩存,而不是從新加載,從而大大提高了性能。

注意事項

  • 無論是什么模塊,我們都要使用 require() 去加載,然后才能使用。
  • 加載自定義的模塊,需要加 ./ ,而且可以省略后綴 .js

自定義模塊的實現(xiàn)(重點)

Node.js中的模塊作用域

在 Node.js 中,用戶創(chuàng)建的每個 .js 文件都是自定義模塊。 在自定義模塊中定義的變量、方法等成員,只能在當前模塊內(nèi)被訪問,這種模塊級別的訪問限制,叫做模塊作用域

模塊作用域的好處是避免了全局變量污染。

導出導入模塊

為了能正常使用加載的模塊中的成員,CommonJS給出了標準,即

  • 一個模塊需要使用 module.exports 導出需要共享的內(nèi)容。
  • 使用模塊的JS文件需要使用 require() 導入模塊。

模塊導出的是什么,另一個使用模塊的JS文件得到的就是什么。

了解CommonJS規(guī)范

為了實現(xiàn)模塊化。

模塊化規(guī)范的種類:

  • AMD
  • CMD
  • CommonJS — Node.js 遵循CommonJS
  • ES6

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

CommonJS 規(guī)定:

  • 每個模塊內(nèi)部,module 變量代表當前模塊。
  • module 變量是一個對象,它的 exports 屬性(即 module.exports)是對外的接口。
  • 加載某個模塊,其實是加載該模塊的 module.exports 屬性。require() 方法用于加載模塊。
  • require() 加載模塊的機制

    加載自定義模塊和其他模塊的機制有相同之處,也有不同之處,所以這里分開來看。

    加載自定義模塊

  • 首次加載成功,會緩存模塊
  • 下次從緩存中加載,速度更快
  • 加載模塊必須加 ./ ,如果是其他路徑,對應變化,否則會把它當做核心模塊或者第三方模塊
  • 加載模塊的時候,如果是 require('./abc')
  • 優(yōu)先加載相同名字的文件,加載一個叫做 abc 的文件
  • 自動補 .js 后綴,然后加載 abc.js 文件
  • 自動補 .json 后綴,然后加載 abc.json 文件
  • 自動補 .node 后綴,然后加載 abc.node 文件
  • 以上文件都沒有,則報錯 Cannot find module './abc'
  • 加載核心模塊和第三方模塊

  • 首次加載成功,會緩存模塊
  • 下次從緩存中加載,速度更快
  • 加載模塊一定不能加 ./ ,否則會把它當做自定義模塊
  • 加載模塊的時候,如果是 require('haha')
  • 優(yōu)先加載核心模塊
  • 去查找并加載第三方模塊,查找第三方模塊的路徑可以通過 module.paths 查看
  • 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的Node — 第三天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。