javascript - 前端開發中業務模型和視圖模型具體分別指什么?
問題描述
在徐飛的這篇文章中,第五節:“為什么MVVM是一種很好的選擇”中,有提到業務模型和視圖模型,他們具體指什么?
問題解答
回答1:【業務模型】和【領域模型】較為相似,可以指用于表達業務內容的數據。例如淘寶的業務模型是【商品】,博客的業務模型是【博文】,推特的業務模型是【推文】。可以理解為經典 MVC 中的 Model,包含了名稱、描述、時間、作者、價格等【真正意義上的】數據字段內容。
而【視圖模型】則是 MVVM 興盛后的新概念。要實現一個完整的 Web App,除了數據外,還有 UI 交互中非常多的【狀態】。例如:彈框是否打開、用戶是否正在輸入、請求 Loading 狀態是否需要顯示、圖表數據分類是否需要顯示追加字段、和用戶輸入時文本的大小和樣式的動態改變……這些和具體數據字段無關,但對前端實際業務場景非常重要的視圖狀態,可以認為是一種【視圖模型】。在 Vue 一類的 MVVM 庫中,上述例子中的狀態都能夠用 JS 變量來表示和控制,這同樣可以認為是一種數據模型。
因此,業務模型和視圖模型在前端都是十分重要的概念。在 MVVM 解決了業務模型數據到頁面之間的綁定關系后,Redux 等狀態管理庫想要解決的則是富交互頁面中,視圖模型狀態極度膨脹所帶來的一系列問題了。對這些模型有更深的理解,實際上也有助于理解前端目前的發展方向。
回答2:舉個栗子你就懂
//業務模型function UserBM(){ this.username; this.password; this.address;}//視圖模型function UserVM(){ this.username; this.password; this.address; this.isShowHelloMessage; this.isShowAddress;}
相關文章:
1. objective-c - ios百度地圖定位問題2. html5 - 如何解決bootstrap打開模態modal窗口引起頁面抖動?3. javascript - 求助關于js正則問題4. javascript - node.js服務端渲染解疑5. javascript - 求助這種功能有什么好點的插件?6. html5 - rudy編譯sass的時候有中文報錯7. html - css 如何添加這種邊框?8. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?9. 微信開放平臺 - Android調用微信分享不顯示10. javascript - 關于定時器 與 防止連續點擊 問題
