UI 開發模式的演進,本質上是為了解決「業務邏輯」與「介面呈現」如何分離、協作的問題。本文按邏輯脈絡梳理:Script → Code Block/Code Behind → MVC/MVP/MVVM。
UI 與邏輯分離後,如何關聯?兩大流派:
在標記檔內直接撰寫邏輯,如 Razor、JSP、ASP.NET WebForms 的 <script runat="server">。
@model MyModel
@{ ViewBag.Title = "Edit"; }
<a class="btn">新增</a>
<script>
$('.btn').click(() => { $.oa.drawer.openUrl(...); });
</script>
優點:UI 與邏輯同檔,維護直觀。
缺點:檔案膨脹、難以單元測試、設計師與開發者衝突。
標記檔只保留事件綁定,邏輯移至獨立類別(.cs/.vb)。
<asp:Button OnClick="Remove_Click" />
// CodeBehind.cs
protected void Remove_Click(object sender, EventArgs e) {
currencyManager.Remove(id);
}
優點:職責清晰、利於團隊協作、可測試。
缺點:事件綁定靈活度較低、View 與 Presenter 耦合。
| 模式 | 核心思想 | 適用場景 |
|---|---|---|
| MVC | Controller 處理請求,操作 Model,選擇 View | Web 應用、伺服端渲染 |
| MVP | Presenter 持有 View 介面,處理所有 UI 邏輯 | WinForms、WPF 傳統桌面 |
| MVVM | ViewModel 透過資料綁定與 View 雙向同步 | WPF、UWP、前端框架 |
沒有銀彈,只有適合當下團隊、專案規模、技術棧的選擇。理解演進歷史,才能在新技術出現時快速定位其解決的核心問題。