Node.js基礎---模塊化

基本概念

模塊化

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

? ? ? ? 遵守固定規則,把大文件拆分成獨立并互相依賴的多個小模塊

? ? ? ? 好處:

? ? ? ? ? ? ? ? 1. 提高代碼的復用性

? ? ? ? ? ? ? ? 2. 提高代碼的可維護性

? ? ? ? ? ? ? ? 3. 實現按需加載

Node.js中的模塊化

根據來源不同分為3大類:

? ? ? ? 1. 內置模塊(由官方提供,例如fs、path、http等)

? ? ? ? 2. 自定義模塊(用戶創建的每個 .js 文件,都是自定義模塊)

? ? ? ? 3. 第三方模塊 (由第三方開發出來的模塊,使用前要下載? ?npm i xxxx)

Node.js中的模塊化規范

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

? ? ? ? CommonJS規定:

? ? ? ? ? ? ? ? 1. 每個模塊內部,module變量代表當前模塊

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

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

加載模塊

使用 require() 方法,可以加載內置模塊(3大類的都可)

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

? ? ? ? ? ?可以省略加載文件名的后綴

Node.js中的模塊作用域

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

? ? ? ? 好處:防止全局變量污染的問題

??

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

1. module對象

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

2. module.exports對象

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

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

3. 共享成員時的注意點

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

4. exports對象

? ? ? ? 由于 modules.exports 單詞寫起來復雜,為了簡化代碼,Node提供了 exports 對象

? ? ? ? 默認情況下,exports 和?modules.exports 指向同一個對象

? ? ? ? 最終結果還是以?modules.exports 指向對象為準

5. exports 和 module.exports 的使用誤區

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

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

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

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

相關文章

【計算機畢業設計】208基于SSM的在線教育網站

🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。🌹贈送計算機畢業設計600個選題excel文件,幫助大學選題。贈送開題報告模板&#xff…

OLLAMA:如何像專業人士一樣運行本地語言模型

原文 https://cheatsheet.md/llm-leaderboard/ollama.en簡介:揭示 OLLAMA 對本地語言模型的強大功能 您是否曾經發現自己陷入了基于云的語言模型網絡中,渴望獲得更本地化、更具成本效益的解決方案?好吧,您的搜索到此結束。歡迎來…

逆向案例四、進階,爬取精靈數據咨詢前五十頁數據

python代碼示例: import csv import execjs import requests f open(精靈數據.csv,w,encodingutf-8,newline) csv_writer csv.DictWriter(f,fieldnames[標題,發布時間,新聞來源,詳情頁鏈接,轉自,點擊量,新聞作者,發布時間小時,]) csv_writer.writeheader() data [] for pa…

【Ansys Fluent Web 】全新用戶界面支持訪問大規模多GPU CFD仿真

基于Web的技術將釋放云計算的強大功能,加速CFD仿真,從而減少對硬件資源的依賴。 主要亮點 ? 使用Ansys Fluent Web用戶界面?(UI),用戶可通過任何設備與云端運行的仿真進行遠程交互 ? 該界面通過利用多GPU和云計算功…

理解python3中的回調函數

百度百科說:回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用&#…

Sqli-labs靶場第13關詳解[Sqli-labs-less-13]

Sqli-labs-Less-13 #手工注入 post傳參了 根據題目看,像一個登錄頁面,嘗試使用布爾型盲注測試能否登錄網站 1. Username輸入a 測試是否會有報錯,burp抓包 報錯:syntax to use near a) and password() LIMIT 0,1 at line 1 分…

[python] `json.dumps()` TypeError: Object of type set is not JSON serializable

在Python中,當你嘗試將一個集合(set)類型的對象轉換為JSON格式時,可能會遇到“TypeError: Object of type set is not JSON serializable”的錯誤。這是因為標準的JSON格式不支持Python中的集合類型,JSON格式支持的數據…

【04】C語言括號匹配問題

歡迎來到土土的博客~🥳🥳🌹🌹🌹 💥個人主頁:大耳朵土土垚的博客 💥 所屬專欄:C語言系列函數實現 題目描述: 給定一個只包括 ‘(’,‘)’&#xf…

加密隧道技術

在現在的互聯網上傳輸數據,首要考慮的就是安全。這關乎到你的隱私,個人信息,財產安全等等重大問題。如果你的程序本身傳輸的信息沒有加密,也可以通過其他輔助方式讓你的通信加密。一些工具的就是為了解決這樣的場景的,…

之前續寫抖音開發者接入字節小游戲的緩存一下,現在說一下在 Windows 或者 Mac 如何用終端更換路徑?

window: 比方說你的 window 目錄下是這個路徑: 第一:E:\project\Q1\trunk\client\src,然后你想切換到下一個路徑的話,你可以這樣子操作: 第二:E:\project\Q1\trunk\client\src> cd .\usersetting 然后回車,這里不會計較大小寫 第三:你就可以在這個目錄下執行你的腳本:E:…

學習大數據,所必需的java基礎(7)

文章目錄 File類File 的靜態成員File的構造方法File的獲取方法相對路徑和絕對路徑File的創建方法File類中的刪除方法File的遍歷方法 字節流IO流介紹以及輸入輸出以及流向的介紹IO流的流向IO流分類IO流分類 OutputStream中的子類FileOutoutStream的介紹以及方法的簡單介紹InputS…

服務器中如何檢查端口是否開放

有多種方法可以檢測服務器端口是否開放。以下是一些常用的方法: 1. Telnet 命令: 使用 Telnet 命令來測試端口的可達性。在命令提示符或終端中執行以下命令: telnet your_server_ip your_port_number 如果連接成功,表示端口是…

C++ //練習 10.22 重寫統計長度小于等于6 的單詞數量的程序,使用函數代替lambda。

C Primer(第5版) 練習 10.22 練習 10.22 重寫統計長度小于等于6 的單詞數量的程序,使用函數代替lambda。 環境:Linux Ubuntu(云服務器) 工具:vim 代碼塊 /********************************…

PDF標準詳解(二)——PDF 對象

上一篇文章我們介紹了一個PDF文檔應該包含的最基本的結構,并且手寫了一個最簡單的 “Hello World” 的PDF文檔。后面我們介紹新的PDF標準給出示例時將以這個文檔為基礎,而不再給出完整的文檔示例,小伙伴想自己測試可以根據上一節的文檔來進行…

分布式ID選型對比(3)

redis自增 一, 引入依賴: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.5</version> </dependency> 二, 配置信息: spring:redis:# 地…

YOLOv8有效漲點,添加GAM注意力機制,使用Wise-IoU有效提升目標檢測效果

目錄 摘要 基本原理 通道注意力機制 空間注意力機制 GAM代碼實現 Wise-IoU WIoU代碼實現 yaml文件編寫 完整代碼分享&#xff08;含多種注意力機制&#xff09; 摘要 人們已經研究了各種注意力機制來提高各種計算機視覺任務的性能。然而&#xff0c;現有方法忽視了…

【C/C++隨筆】static 的用法和作用

「前言」所有文章已經分類好&#xff0c;放心食用 「歸屬專欄」C語言 | C嘎嘎 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) static 的用法和作用&#xff1f;&#xff1f;&#xff1f; static作用&#xff1a; 作用1修改存儲方式&#xff1a;用 static 修飾的變量存儲在靜態區…

項目解決方案: 實時視頻拼接方案介紹(中)

目 錄 1.實時視頻拼接概述 2.適用場景 3.系統介紹 4. 拼接方案介紹 4.1基于4K攝像機的拼接方案 4.2采用1080P平臺3.0 橫向拼接 4.2.1系統架構 4.2.2系統功能 4.2.3方案特色 4.2.4適用場景 4.2.5設備選型 4.3縱橫兼顧&#xff0c;豎屏拼接 4.3.1系統…

如何使用ArcGIS Pro創建最低成本路徑

雖然兩點之間直線最短&#xff0c;但是在實際運用中&#xff0c;還需要考慮地形、植被和土地利用類型等多種因素&#xff0c;需要加權計算最低成本路徑&#xff0c;這里為大家介紹一下計算方法&#xff0c;希望能對你有所幫助。 數據來源 教程所使用的數據是從水經微圖中下載…

十四、計算機視覺-形態學梯度

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 一、梯度的概念二、梯度的應用三、梯度如何實現 一、梯度的概念 形態學梯度&#xff08;Morphological Gradient&#xff09;是數字圖像處理中的一種基本操作&…