為什么會出現(xiàn) MVVM 呢?

我接觸MVVM 是在2015年,可以說2015年是MVVM 最火熱的一年,而在這之前,我所知道的就是MVC,  MVC 大約是在5年前,也就是2011年的時(shí)候接觸的,那時(shí)候剛學(xué)編程語言,學(xué)的是Java,而Java 中的經(jīng)典的 SSH 框架就用來構(gòu)建一個(gè)標(biāo)準(zhǔn)的MVC 架構(gòu)。說實(shí)話,MVC 架構(gòu)用了這么多年,但始終沒有很深刻的理解,只停留在用的層面, 一直到接觸 Vue.js 之后,研究了MVVM 架構(gòu)思想,然后再回頭看 MVC ,才有一種豁然開朗的感覺~

MVC 即 Model-View-Controller 的縮寫,就是 模型-視圖-控制器 , 也就是說一個(gè)標(biāo)準(zhǔn)的Web 應(yīng)用程式是由這三部分組成的: 

View 用來把數(shù)據(jù)以某種方式呈現(xiàn)給用戶
Model 其實(shí)就是數(shù)據(jù)
Controller 接收并處理來自用戶的請求,并將 Model 返回給用戶

在HTML5 還未火起來的那些年,MVC 做為Web 應(yīng)用的最佳實(shí)踐是OK的,這是因?yàn)?Web 應(yīng)用的View 層相對來說比較簡單,前端所需要的數(shù)據(jù)在后端基本上都可以處理好,View 層主要是做一下展示,那時(shí)候提倡的是 Controller 來處理復(fù)雜的業(yè)務(wù)邏輯,所以View 層相對來說比較輕量,就是所謂的 瘦客戶端 思想。

2010年到2011年,HTML5概念被熱炒,受到追捧,2012年,W3C 正式宣布HTML5規(guī)范已經(jīng)正式定稿。2013年我剛進(jìn)公司就接觸到了一個(gè) HTML5 框架 Sench touch, Sench touch 是一款用來構(gòu)建移動應(yīng)用的HTML5 框架,它將前后端徹底分離,前端采用的是MVC 架構(gòu),作為一個(gè)獨(dú)立的項(xiàng)目工程來維護(hù)。

為什么前端要工程化,要是使用MVC? 

相對 HTML4 ,HTML5 最大的亮點(diǎn)是它為移動設(shè)備提供了一些非常有用的功能,使得 HTML5 具備了開發(fā)App的能力, HTML5開發(fā)App 最大的好處就是跨平臺、快速迭代和上線,節(jié)省人力成本和提交效率,因此很多企業(yè)開始對傳統(tǒng)的App進(jìn)行改造,逐漸用H5代替Native頁面,到2015年的時(shí)候,市面上很多App 或多或少嵌入都了H5頁面。

既然要用H5來構(gòu)建 App, 那View 層所做的事,就不僅僅是簡單的數(shù)據(jù)展示了,要管理數(shù)據(jù),管理用戶操作的各種狀態(tài),還要處理移動設(shè)備上用戶各種操作行為等等。因此,前端也需要一個(gè)類似于MVC的框架來管理這些復(fù)雜的邏輯,使開發(fā)更加高效。 但此時(shí)的 MVC 又稍微發(fā)了點(diǎn)變化: