Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

函數、模組、套件與框架之間的關係與差異

最後更新:2025年3月22日程式語言

本文為 python 模組系列文,第四篇

  1. 初學者指南:如何在 Python 中建立和匯入模組
  2. 深入理解 Python 中的模組(Module)與套件(Package)
  3. 深入理解 Python 中的重複匯入模組
  4. 函數、模組、套件與框架之間的關係與差異 👈所在位置

本文同時為 Node.js 基礎,第 6 篇:

  1. 初學者指南:什麼是 Runtime 執行環境?
  2. 初學者指南:Node.js 是什麼?
  3. 初學者指南:什麼是 Node.js 的 LTS 版本?
  4. 初學者指南:Node.js 和瀏覽器中常見函數的使用差異
  5. nvm 是什麼?新手必看的 Node.js 版本管理工具指南
  6. 函數、模組、套件與框架之間的關係與差異 👈進度
  7. NPM 使用指南:如何管理 JavaScript 套件與依賴
  8. 不用看 README!從 package.json 快速掌握一個專案的完整指南
  9. 從 npm install 到 npm ci:你以為你懂了,其實沒這麼簡單!

在程式開發中,「函數」、「模組」、「套件」和「框架」是非常常見的概念,從小單元到大型架構,它們分別代表不同的功能範疇和用途。

理解這些概念之間的關係,能幫助我們更有效率地組織和管理代碼。

本文將依次介紹函數、模組、套件和框架之間的層次結構和差異。

函數與模組的關係

函數(Function)

函數是程式中的最小功能單元,用於執行特定任務或運算。

它是開發者經常使用的工具,將程式中的操作進行重用。

例如,數學運算中的 sqrt() 函數可以計算平方根,而 log() 函數可以輸出訊息到控制台。

模組(Module)

模組是多個函數的集合,用於封裝邏輯並提供命名空間,以避免函數之間的命名衝突。

模組能讓開發者把多個相關函數組織在一起,這樣程式碼更具結構性。

比如在 JavaScript 中,Math 是一個模組,裡面包含了各種數學函數(如 Math.sqrt()、Math.pow() 等)。

為什麼需要模組?

模組的主要作用是避免命名衝突。

例如,假設兩個開發者分別設計了同名的 aa() 函數,這樣就容易發生混淆或錯誤。

但如果這些函數放在不同的模組下,比如 A.aa() 和 B.aa(),則可以明確區分來自不同模組的 aa() 函數,避免衝突。

同理,模組在管理大型程式碼庫時尤為有用,因為它讓開發者可以輕鬆地找到特定功能的函數。

簡單比喻

可以把模組和函數的關係比作論壇中的暱稱。

假設許多人在網路上自稱「金城武」,我們難以辨別他們的身份。

但如果我們在「金城武」前加上區域,比如「板橋金城武」和「樹林金城武」,這樣就可以明確辨識每個人。

模組就相當於這種區域劃分,讓同名的函數不會互相衝突。

模組與套件的關係

套件(Library/Package)

套件是多個模組的集合,進一步擴展了模組的功能。

每個套件包含了多個模組、函數和其他資源,使開發者可以使用豐富的工具組,來實現特定的功能。

套件通常封裝了多種常用功能,讓開發者能夠方便地在程式中調用,而不需要重新撰寫。

套件的特點

  • 功能集合:套件通常包含多個模組和函數,提供更完整的功能。
  • 便於使用:開發者可以直接在程式碼中呼叫套件中的函數,省去大量的開發時間。
  • 降低重複性:套件的目的是將經常需要的操作封裝起來,避免重複代碼。

函數、模組與套件的層次關係

  • 函數 × n = 模組
  • 模組 × n = 套件

例如,jQuery 就是一個非常著名的 JavaScript 套件,它包含多種模組,每個模組又包含了許多函數,比如 DOM 操作模組中的選擇器 $()、事件處理函數 on() 等。

簡單比喻

可以把套件比作一個多功能的工具箱,它裡面有不同的工具(模組),每個工具又有不同的操作方式(函數)。

使用套件就像在使用這些工具,我們可以根據需要調用相應的模組和函數來完成不同的工作。

套件與框架的關係

框架(Framework)

框架是一種更為完整的應用開發架構,除了提供一組工具和函數外,框架還會主動控制程式的執行流程。

框架的特點是 反轉控制(Inversion of Control,IoC),框架不僅僅是工具的集合,還擁有控制程式的能力。

它會在程式的不同階段,自動執行開發者定義的函數,並提供一套規則來實現完整的開發流程。

框架的生命周期

框架會根據生命週期控制執行流程。

典型的生命周期包括初始化、運行中、結束等階段。

在這些階段中,框架會「挖洞」,允許開發者在指定階段填寫自己的函數,比如應用啟動前的初始化設置、運行中如何處理數據等。

套件與框架的差異

  • 控制權:在套件中,開發者主動調用函數來實現需求;在框架中,則由框架主動調用開發者定義的函數。
  • 使用範圍:套件通常提供一組功能函數,而框架則提供了完整的開發架構,讓開發者依照它的規則進行開發。

簡單比喻

框架就像是建築的「框架結構」,開發者在它提供的結構內部填寫具體的功能。

使用框架時,開發者遵循框架的規則來設置參數、撰寫功能,而框架會在適當的時間調用這些功能,類似於 callback function。

像 React、Angular 和 Vue 等前端框架,就是這樣的應用架構。

函數、模組、套件與框架的結構層次

名稱定義與特點例子
函數最小的執行單位,用於完成特定任務Math.sqrt()、console.log()
模組函數的集合,具有命名空間,避免命名衝突Math 模組包含多個數學函數
套件包含多個模組的工具集合,提供便於開發的多種功能jQuery、Lodash
框架提供完整的應用開發結構,控制程式的執行流程,依循固定規範React、Vue、Angular
定義與特點最小的執行單位,用於完成特定任務
例子Math.sqrt()、console.log()
定義與特點函數的集合,具有命名空間,避免命名衝突
例子Math 模組包含多個數學函數
定義與特點包含多個模組的工具集合,提供便於開發的多種功能
例子jQuery、Lodash
定義與特點提供完整的應用開發結構,控制程式的執行流程,依循固定規範
例子React、Vue、Angular

總結

  • 函數 是執行特定任務的基本單位。
  • 模組 將函數組合在一起,提供命名空間以避免衝突。
  • 套件 是模組的集合,封裝大量功能供開發者直接調用。
  • 框架 則提供了一整套的開發規範和控制流程,讓開發者在其架構內編寫功能。

從函數到框架,它們構成了層層遞進的結構。理解這些概念的差異,可以幫助開發者根據需求選擇合適的工具,使開發過程更加清晰、高效。

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

程式語言

目錄

  • 函數與模組的關係
  • 函數(Function)
  • 模組(Module)
  • 簡單比喻
  • 模組與套件的關係
  • 套件(Library/Package)
  • 套件的特點
  • 函數、模組與套件的層次關係
  • 簡單比喻
  • 套件與框架的關係
  • 框架(Framework)
  • 框架的生命周期
  • 套件與框架的差異
  • 簡單比喻
  • 函數、模組、套件與框架的結構層次
  • 總結