為什么會出現(xiàn) MVVM 呢?
我接觸MVVM 是在2015年,可以說2015年是MVVM 最火熱的一年,而在這之前,我所知道的就是MVC, MVC 大約是在5年前,也就是2011年的時候接觸的,那時候剛學編程語言,學的是Java,而Java 中的經(jīng)典的 SSH 框架就用來構建一個標準的MVC 架構。說實話,MVC 架構用了這么多年,但始終沒有很深刻的理解,只停留在用的層面, 一直到接觸 Vue.js 之后,研究了MVVM 架構思想,然后再回頭看 MVC ,才有一種豁然開朗的感覺~
MVC 即 Model-View-Controller 的縮寫,就是 模型-視圖-控制器 , 也就是說一個標準的Web 應用程式是由這三部分組成的:
View 用來把數(shù)據(jù)以某種方式呈現(xiàn)給用戶
Model 其實就是數(shù)據(jù)
Controller 接收并處理來自用戶的請求,并將 Model 返回給用戶
在HTML5 還未火起來的那些年,MVC 做為Web 應用的最佳實踐是OK的,這是因為 Web 應用的View 層相對來說比較簡單,前端所需要的數(shù)據(jù)在后端基本上都可以處理好,View 層主要是做一下展示,那時候提倡的是 Controller 來處理復雜的業(yè)務邏輯,所以View 層相對來說比較輕量,就是所謂的 瘦客戶端 思想。
2010年到2011年,HTML5概念被熱炒,受到追捧,2012年,W3C 正式宣布HTML5規(guī)范已經(jīng)正式定稿。2013年我剛進公司就接觸到了一個 HTML5 框架 Sench touch, Sench touch 是一款用來構建移動應用的HTML5 框架,它將前后端徹底分離,前端采用的是MVC 架構,作為一個獨立的項目工程來維護。
為什么前端要工程化,要是使用MVC?
相對 HTML4 ,HTML5 最大的亮點是它為移動設備提供了一些非常有用的功能,使得 HTML5 具備了開發(fā)App的能力, HTML5開發(fā)App 最大的好處就是跨平臺、快速迭代和上線,節(jié)省人力成本和提交效率,因此很多企業(yè)開始對傳統(tǒng)的App進行改造,逐漸用H5代替Native頁面,到2015年的時候,市面上很多App 或多或少嵌入都了H5頁面。
既然要用H5來構建 App, 那View 層所做的事,就不僅僅是簡單的數(shù)據(jù)展示了,要管理數(shù)據(jù),管理用戶操作的各種狀態(tài),還要處理移動設備上用戶各種操作行為等等。因此,前端也需要一個類似于MVC的框架來管理這些復雜的邏輯,使開發(fā)更加高效。 但此時的 MVC 又稍微發(fā)了點變化: