MVC 一種軟體架構模式,把系統分成三個種核心,分別為: Model, View, Controller。它的設計概念是以關注點分離(seperation of concerns, SOC)
為基礎,將應用程式拆解成不同的功能面向,各自處理負責事項,強調團隊分工的概念。
這三個套用在 Web 分別為前端 HTML+CSS (View),後端 API 資料庫(Model),控制後端資料庫的接口 JavaScript (Controller)
- Model:後端資料庫進行運作
- View:前端畫面與邏輯顯示
- Controller:處理控制流程和回應,以路由以傳遞資料為主
Controller 控制器 — 事件層
Controller 是整個運作過程中的核心,掌握與瀏覽器之間的互動行為,也負責收發 Request 與 Response,因此,通常會在 Controller 設置不同的事件 Event,進而觸發不同指令完成後續動作。
例如:當 Controller 收到請求後,Controller 會通知 Model 調度資料,接著再把資料傳遞給 View 來產生樣板,最終將呈現資料的 HTML 頁面回傳到客戶端的瀏覽器。
Model 模型 — 邏輯層
Model 主要管理與資料邏輯有關的事項,若使用者想要對資料進行「新增、修改、刪除、瀏覽」的動作,都需要透過 Model 中的 JavaScript 來操作,如電商網站的免運費、計算訂單總額…等等。
View 視圖 — 表現層
View 主要管理第一線與使用者互動的介面,也就是 HTML 樣板,若是動態網站,他則會依照 Model 取出的資料內容,動態呈現使用者需要的網頁內容。
讀後思考:
- MVC與API差異?
MVC是個架構,之下可透過RESTful API 進行資料存取、方便管理路由及API
2. React 是MVC架構嗎?
react 應該是只有V,因為到資料庫存取資料仍是透過node.js。
3. 但是加入了Redux應該也可以算是MVC架構?
React扮演的是View的角色,Redux則是Controller,至於Model就是Redux Store中儲存的State。
4. node.js express框架比較符合MVC?
client透過路由發送請求controller,路由到資料庫拿資料model,將資料output 到views ejs 樣板選染畫面給client。
參考資料:
video: