什麼是 Framework (框架) ?

1
什麼是 Framework (框架) ?:框架(Framework)是程式設計中提供完整應用程式骨架與工作流程的軟體平台,預先定義架構規範、元件與控制流程,讓開發者填入業務邏輯即可快速建構應用。它就像建築藍圖與鷹架,規定「怎麼做」而非「做什麼」,與函式庫的「被呼叫」關係相反,框架主動「呼叫你的程式碼」,大幅提升開發效率與一致性。

什麼是 Framework (框架) ?

框架(Framework)是程式設計中提供完整應用程式骨架與工作流程的軟體平台,預先定義架構規範、元件與控制流程,讓開發者填入業務邏輯即可快速建構應用。它就像建築藍圖與鷹架,規定「怎麼做」而非「做什麼」,與函式庫的「被呼叫」關係相反,框架主動「呼叫你的程式碼」,大幅提升開發效率與一致性。

 

框架與函式庫的核心區別

「控制反轉」(Inversion of Control,IoC)是框架的精髓:

  • 函式庫:你呼叫庫中的函式,控制流程在你手中。

  • 框架:框架呼叫你的程式碼(如回調函式、控制器),你遵循其流程。

範例比喻:用 requests.get() 查 API 是函式庫;用 Express 路由處理請求是框架。

 

框架的典型組成元件

完整框架包含多層架構:

  • 路由系統:映射 URL 到處理函式(如 /users/:id

  • 模板引擎:動態生成 HTML(如 Jinja2、Pug)

  • ORM/ODM:資料庫抽象(如 SQLAlchemy、Mongoose)

  • 中介軟體:請求處理管道(如認證、記錄)

  • CLI 工具:專案生成、遷移管理

  • 內建伺服器:開發時快速啟動

 

MVC 架構模式

多數 Web 框架採用 MVC(Model-View-Controller)分離關注:

  • Model:資料模型與業務邏輯

  • View:使用者介面呈現

  • Controller:處理請求、協調 Model/View


 

text

請求 → Controller → Model (資料) → View (渲染) → 回應

 

主流框架生態比較

語言 框架範例 特色 學習曲線
JavaScript Express 輕量、中介軟體
  React 組件化 UI
  Next.js 全端渲染 中高
Python Flask 微框架、靈活
  Django 全功能、ORM
Java Spring Boot 企業級、依賴注入
Ruby Rails 慣例優先

 

實際開發流程範例

Express.js 快速啟動

npm init -y && npm i express
 

const express = require('express')
const app = express()  // 框架實例

app.get('/users/:id', (req, res) => {  // 框架呼叫你的路由
  res.json({ id: req.params.id })
})

app.listen(3000)  // 框架啟動伺服器
 

Django 專案結構

mysite/
├── manage.py      # CLI 工具
├── settings.py    # 配置中心
├── urls.py        # 路由總表
└── app/
    ├── models.py  # ORM 模型
    ├── views.py   # 控制器
    └── templates/ # HTML 模板
 

框架的優點與限制

優點

  • 開發加速:內建最佳實務與樣板

  • 一致架構:團隊協作標準化

  • 生態完整:豐富插件與文件

  • 安全性:內建 CSRF、SQL 注入防護

限制

  • 學習曲線:需理解框架哲學

  • 客製限制:「框架的框架」難改流程

  • 效能開銷:相較原生程式碼較重

  • 版本依賴:升級需適配變更

 

全端與微框架趨勢

  • 全端框架:Next.js、Nuxt.js、Remix,一次處理前後端

  • 微框架:FastAPI、Rocket,極簡核心+插件擴充

  • API 優先:tRPC、GraphQL 框架,專為後端 API

 

框架選擇決策矩陣

專案規模 | 建議框架
小型 API    → FastAPI、Express
中型 Web    → Django、Next.js
大型企業    → Spring Boot、.NET Core
即時應用    → Socket.io、FastAPI WebSocket
 

最佳實務:從文件開始、遵循慣例、善用 CLI、閱讀原始碼。框架是生產力倍增器,但選錯則成枷鎖。初學者從輕量框架(如 Flask)入門,理解控制反轉後再挑戰全功能框架,就能快速建構專業應用。