為什么會出現(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)變化:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26