View Model
除了 MVC 之外,後來 Microsoft 又提出一個 model-view-view model (MVVM)
,view model 是一種 model 的變形,有時候你 view 需要的資料,不只會包含一個 model,又或者它僅需要部分的資料,因為有部分不能傳給使用者,例如資料庫中記錄的密碼或一些對使用者無意義的資料,但對系統有意義的資料。
Model
不太嚴謹的說法,可以直接對照到資料庫的 table
範例
改變前
User.js
1 | module.exports = { |
Profile.js
1 | module.exports = { |
UserController.js
1 | apiMe: async(req, res) => { |
改變後
UserController.js
1 | var userViewModel = require('../viewModels/UserViewModel.js') |
UserViewModel.js
1 | module.exports = async (userId) => { |
結論
主要是好處是把 ViewModel 封裝起來,在其他地方也可以被重複使用。
補充
View:主要是將 model 呈現給使用者
Controller:會接收使用者輸入的資料,並決定要顯示哪個 view。