什麼是 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)入門,理解控制反轉後再挑戰全功能框架,就能快速建構專業應用。