Node.js(二)-模塊化

1.?模塊化的基本概念

1.1?什么是模塊化?

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

1.2?編程領域中的模塊化

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

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

  1. 提高了代碼的復用性
  2. 提高了代碼的可維護性
  3. 可以實現按需加載

1.3 模塊化規范

????????模塊化規范就是對代碼進行模塊化的拆分與組合時,需要遵守的那些規則。例如:

  • 使用什么樣的語法格式來引用模塊
  • 在模塊中使用什么樣的語法格式向外暴露成員
  • 模塊化規范的好處:大家都遵守同樣的模塊化規范寫代碼,降低了溝通的成本,極大方便了各個模塊之間的相互調用利人利己。

2. Node.js中的模塊化?

2.1 Node.js中模塊的分類

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

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

2.2?加載模塊

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

// 1.加載內置的fs模塊
const fs = require('fs')// 2.加載用戶自定義模塊
const custom = require('./custom.js')// 3.加載第三方模塊
const moment = require('moment')

注意:1.使用require()方法加載其他模塊時,會執行被加載模塊中的代碼;2.使用require()方法加載自定義模塊時,可以省略 .js的后綴名。

2.3 Node.js中的模塊作用域

2.3.1?什么是模塊作用域

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

// 這是01-模塊化作用域.js
const userName = '張三'function sayHello(){console.log('大家好,我是:'+userName);
}// 這是02-test.js
const custom = require('./01-模塊作用域')console.log('custom ',custom );//輸出:custom {}
2.3.2?模塊作用域的好處

????????防止污染全局變量

2.4?向外共享模塊作用域成員

2.4.1?module

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

2.4.2 module.exports

????????在自定義模塊中,可以使用 module.exports 對象,將模塊內的成員共享出去,供外界使用。外界用 require()方法導入自定義模塊時,得到的就是module.exports 所指向的對象。

2.4.3?共享成員時的注意點

? ? ? ? 使用require方法導入模塊時,永遠以module.exports指向的對象為準。??

2.4.4?exports對象?

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

?2.4.5?exports和module.exports的使用誤區

?????????時刻謹記,require() 模塊時,得到的永遠是 module.exports 指向的對象(圖來自于黑馬程序員課程PPT,因為這段犯懶沒動手):

原理圖:

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

?2.5 Node.js中的模塊化規范

? ? ? ? ?Node.js遵循了CommonJS模塊化規范,CommonJS規范了模塊的特性各模塊之間如何相互依賴

CommonJS 規定:

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536730.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536730.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536730.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

48V轉12V 300mA降壓芯片,60V耐壓、0.6A穩壓芯片帶ECO模式-AH590L

AH590L是一種48V轉12V 300mA降壓芯片,具有60V耐壓、0.6A穩壓電流的特點,并且還帶有ECO模式,是一種理想的開關電源解決方案。 AH590L是PWM模式 DC/DC降壓轉換器。TEL:l86*4884*3702*寬輸入電壓范圍4至60V適用于工業領域的廣泛應用…

有意思、好用的免費API分享

Facebook Games Services - Facebook Games Services 為游戲開發者提供了各種服務, 包括(但不限于) 成就 API, 分數 API, 應用通知, 請求, 游戲養成和 Facebook SDK for Unity.Google Play Games Services - Google Developers Games 網站提供了各種 API, SDK 和服務, 包括(但不…

AI安全綜述

1、引言 AI安全這個話題,通常會引伸出來圖像識別領域的對抗樣本攻擊。下面這張把“熊貓”變“猴子”的攻擊樣例應該都不陌生,包括很多照片/視頻過人臉的演示也很多。 對抗樣本的研究領域已經具備了一定的成熟性,有一系列的理論來論述對抗樣本…

解決jquery-1.11.0.js安全漏洞

摘要:這個文件被掃出安全漏洞有XSS攻擊等 ,其中一個比較著名的漏洞是在JQuery 1.6.2版本中發現的。該漏洞被稱為”attrFn"漏洞,它允許攻擊者通過特殊構造的代碼執行任意的JavaScript代碼。 一、統一解決方式: jQuery官網 官…

javafx實現復雜統計圖繪畫

JavaFX 是一個用于創建富互聯網應用程序 (Rich Internet Applications) 的軟件平臺,可以用于創建各種圖形和圖表。下面是一個示例代碼,演示如何使用 JavaFX 繪制復雜的統計圖。 import javafx.application.Application; import javafx.collections.FXCollections; import ja…

one wire(單總線)FPGA代碼篇

一.引言 單總線(OneWire)是一種串行通信協議,它允許多個設備通過一個單一的數據線進行通信。這個協議通常用于低速、短距離的數字通信,特別適用于嵌入式系統和傳感器網絡。 二.one wire通信優點缺點 優點: 單一數據線…

Unity程序向Web服務器發送數據

Unity程序向Web服務器發送數據 一、介紹二、HTTP協議三、新建Unity工程,創建腳本1.新建Unity工程,創建腳本WebManager.cs,將其指定給場景中的任意游戲體。2.在WebManager.cs中添加一個m_info屬性和OnGUI函數顯示UI: 四、GET請求在…

npm使用詳解(好吧好吧是粗解)

目錄 npm是什么? npm有什么用? npm安裝 在 Windows 上 在 macOS 上 在 Linux 上(使用 apt 包管理器為例) 驗證 npm 安裝成功: npm使用 1. 初始化項目: 2. 安裝和管理依賴: 3. 查看和…

【DataV】DataV組件庫——更新數據視圖不更新

參考文章:dataV組件庫——改變數據視圖不主動刷新 問題: 拿到后端數值就直接賦值了,但是視圖(頁面)沒有更新。 解決: 官方文檔介紹dataV里面的組件props均未設置deep監聽,刷新props時&#xf…

一個利用摸魚時間背單詞的軟件

大家好,我是 Java陳序員。 最近進入了考試季,各種考試,英語四六級、考研、期末考等。不知道大家的英語四六級成績怎么樣呢? 記得大學時,英語四級都是靠高中學習積累的老本才勉強過關。 而六級則是考了多次&#xff…

20231224解決outcommit_id.xml1 parser error Document is empty的問題

20231224解決outcommit_id.xml1 parser error Document is empty的問題 2023/12/24 18:13 在開發RK3399的Android10的時候,出現:rootrootrootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make installclean PLATFORM_VERSION_CODENAMEREL…

靜態HTTP的常見問題和解決方法

大家好,歡迎來到今天的“靜態HTTP大講堂”!今天我們要聊聊靜態HTTP的常見問題和解決方法。別小看這些問題哦,它們就像是那些頑皮的小妖精,時不時地給你的網站搞點惡作劇。不過別擔心,有我在,這些小妖精都得…

推薦一款好用的免費圖片轉換工具bmp轉png工具bmp2png

推薦一款好用的免費圖片轉換工具bmp轉png工具bmp2png 寫這個工具是因為要使用傳奇的部分素材在COCOS2DX使用,但是COCOS2DX不支持BMP如果直接將BMP轉換到PNG的話,網上找到的工具都不支持透明色轉換。難道要用PS一個一個摳圖嗎?要累死所以寫了…

HBase 超大表遷移、備份、還原、同步演練手冊:全量快照 + 實時同步(Snapshot + Replication)不停機遷移方案

博主歷時三年精心創作的《大數據平臺架構與原型實現:數據中臺建設實戰》一書現已由知名IT圖書品牌電子工業出版社博文視點出版發行,點擊《重磅推薦:建大數據平臺太難了!給我發個工程原型吧!》了解圖書詳情,京東購書鏈接:https://item.jd.com/12677623.html,掃描左側二維…

如何選擇適合業務的負載均衡策略?

在分布式系統的高可用設計中,負載均衡非常關鍵,我們知道,分布式系統的特性之一就是支持快速擴展,那么集群擴展之后,服務請求如何從服務器列表中選擇合適的一臺呢?這就需要依賴負載均衡策略。 負載均衡在處…

免 費 搭 建 小程序商城,打造多商家入駐的b2b2c、o2o、直播帶貨商城

在數字化時代,電商行業正經歷著前所未有的變革。鴻鵠云商的saas云平臺以其獨特的架構和先進的理念,為電商行業帶來了全新的商業模式和營銷策略。該平臺涉及多個平臺端,包括平臺管理、商家端、買家平臺、微服務平臺等,涵蓋了pc端、…

項目執行常用的ChatGPT通用提示詞模板

項目啟動與準備:如何確保項目按計劃啟動,并為項目執行做好充分準備? 任務分配與執行:如何合理分配任務,確保項目團隊成員明確各自的責任和目標? 進度監控與調整:如何實時監控項目進度&#xf…

Python 數據分析 Matplotlib篇 plt.rcParams 字典(第5講)

Python 數據分析 Matplotlib篇 plt.rcParams字典(第5講) ??????? ??博主 侯小啾 感謝您的支持與信賴。?? ?????????????????????????????????????????????????????????????????????????…

17.仿簡道云公式函數實戰-數學函數-ABS

1. ABS函數 ABS 函數可用于返回數字的絕對值 2. 函數用法 ABS(number) 3. 函數示例 如,ABS(-12)和ABS(12)的返回結果均為 12。 4. 代碼實戰 首先我們在function包下創建math包,在math包下創建AbsFunction類,代碼如下: pac…

Python是什么?

Python是一種高級編程語言,具有簡單易學、代碼可讀性強、開發效率高等特點。它采用解釋型執行方式,可以跨平臺運行,并且擁有豐富的第三方庫和框架支持,被廣泛應用于Web開發、數據分析、人工智能等領域。 文章目錄 一、Python的歷…