MVVM思想
前言
前幾天我們已經(jīng)對后端的技術(shù)棧有了初步的了解、并且已經(jīng)搭建了整個(gè)后端微服務(wù)的平臺(tái)。接下來要做的事情就是功能開發(fā)了。但是沒有前端頁面,我們肯定無從下手,因此今天我們就要來了解一下前端的一些技術(shù),完成前端頁面搭建。
先聊一下前端開發(fā)模式的發(fā)展。
靜態(tài)頁面
最初的網(wǎng)頁以HTML為主,是純靜態(tài)的網(wǎng)頁。網(wǎng)頁是只讀的,信息流只能從服務(wù)端到客戶端單向流通。開發(fā)人員也只關(guān)心頁面的樣式和內(nèi)容即可。
異步刷新,操作DOM
1995年,網(wǎng)景工程師Brendan Eich 花了10天時(shí)間設(shè)計(jì)了JavaScript語言.
隨著JavaScript的誕生,我們可以操作頁面的DOM元素及樣式,頁面有了一些動(dòng)態(tài)的效果,但是依然是以靜態(tài)為主。
ajax盛行:
-
2005年開始,ajax逐漸被前端開發(fā)人員所重視,因?yàn)椴挥盟⑿马撁婢涂梢愿马撁娴臄?shù)據(jù)和渲染效果。
-
此時(shí)的開發(fā)人員不僅僅要編寫HTML樣式,還要懂a(chǎn)jax與后端交互,然后通過JS操作Dom元素來實(shí)現(xiàn)頁面動(dòng)態(tài)效果。比較流行的框架如Jquery就是典型代表。
MVVM,關(guān)注模型和視圖
2008年,google的Chrome發(fā)布,隨后就以極快的速度占領(lǐng)市場,超過IE成為瀏覽器市場的主導(dǎo)者。
2009年,Ryan Dahl在谷歌的Chrome V8引擎基礎(chǔ)上,打造了基于事件循環(huán)的異步IO框架:Node.js。
-
基于事件循環(huán)的異步IO
-
單線程運(yùn)行,避免多線程的變量同步問題
-
JS可以編寫后臺(tái)代碼,前后臺(tái)統(tǒng)一編程語言
node.js的偉大之處不在于讓JS邁向了后端開發(fā),而是構(gòu)建了一個(gè)龐大的生態(tài)系統(tǒng)。
2010年,NPM作為node.js的包管理系統(tǒng)首次發(fā)布,開發(fā)人員可以遵循Common.js規(guī)范來編寫Node.js模塊,然后發(fā)布到NPM上供其他開發(fā)人員使用。目前已經(jīng)是世界最大的包模塊管理系統(tǒng)。
隨后,在node的基礎(chǔ)上,涌現(xiàn)出了一大批的前端框架:
MVVM模式
-
M:即Model,模型,包括數(shù)據(jù)和一些基本操作
-
V:即View,視圖,頁面渲染結(jié)果
-
VM:即View-Model,模型與視圖間的雙向操作(無需開發(fā)人員干涉)
在MVVM之前,開發(fā)人員從后端獲取需要的數(shù)據(jù)模型,然后要通過DOM操作Model渲染到View中。而后當(dāng)用戶操作視圖,我們還需要通過DOM獲取View中的數(shù)據(jù),然后同步到Model中。
而MVVM中的VM要做的事情就是把DOM操作完全封裝起來,開發(fā)人員不用再關(guān)心Model和View之間是如何互相影響的:
-
只要我們Model發(fā)生了改變,View上自然就會(huì)表現(xiàn)出來。
-
當(dāng)用戶修改了View,Model中的數(shù)據(jù)也會(huì)跟著改變。
把開發(fā)人員從繁瑣的DOM操作中解放出來,把關(guān)注點(diǎn)放在如何操作Model上。
?
總結(jié)