官术网_书友最值得收藏!

1.1 簡單認(rèn)識(shí)Vue

1.首先,Vue是一款MVVM框架。

所謂MVVM,即Model-View-ViewModel,即模型-視圖-視圖模型模式。

熟悉MVC的讀者可能知道,MVC是模型-視圖-控制器(Model-View-Controller)模式,在早期曾廣泛應(yīng)用于Web架構(gòu)中。其中Model(模型層)指的是業(yè)務(wù)模型,用于計(jì)算、校驗(yàn)、處理和提供數(shù)據(jù),不直接與用戶產(chǎn)生交互;View(視圖層)是用戶可以看到并進(jìn)行交互的界面,比如瀏覽器網(wǎng)頁;Controller(控制器層)則負(fù)責(zé)收集用戶輸入的數(shù)據(jù),并向相關(guān)模型請求數(shù)據(jù)并返回相應(yīng)的視圖來完成交互請求。這種模式在早期的JSP、PHP應(yīng)用中廣泛使用,此時(shí)前后端的耦合度還是相當(dāng)高的,用戶界面的數(shù)據(jù)還是由后端生成,在前端頁面也可能出現(xiàn)后端代碼。隨著前端技術(shù)的發(fā)展,MVVM模式的誕生促進(jìn)了前后端的分離解耦。

MVVM是MVC的變種,Model和View與MVC模式一致,ViewModel(視圖模型層)作為View和Model溝通的橋梁,封裝了界面展示和操作的屬性和接口等,可以將Model數(shù)據(jù)的變化實(shí)時(shí)反映到View上,又可以監(jiān)聽View的變化,在需要的時(shí)候更新數(shù)據(jù)。Vue的MVVM模式如圖1.1所示。

圖1.1 Vue的MVVM框架示意圖

● View(視圖層):在前端開發(fā)中通常來說是DOM層,是用戶看得到的界面。

● Model(模型層):也稱數(shù)據(jù)層,是來自服務(wù)器請求或固定的一些死數(shù)據(jù)。

● ViewModel(視圖模型層):實(shí)現(xiàn)了數(shù)據(jù)綁定(Data Bindings),可以在Model層數(shù)據(jù)發(fā)生變化時(shí)將變化反映到View上。用戶與View進(jìn)行交互時(shí),ViewModel層又可以通過監(jiān)聽DOM事件的變化,將監(jiān)聽到的變化反映給Model。

由于Vue使用MVVM的這些特性,將前端開發(fā)者以前常用的操作變化封裝成了一個(gè)框架,前端開發(fā)者使用Vue這樣的框架,便可以不再需要花費(fèi)大量時(shí)間操作DOM來保持視圖和數(shù)據(jù)的統(tǒng)一,只需要關(guān)注業(yè)務(wù)數(shù)據(jù)的變化,因此代碼變得結(jié)構(gòu)清晰并且更加易于維護(hù)。

MVVM中的組件化是一個(gè)重要特點(diǎn)。從MVVM模式中去掉M,剩下的VVM便是一個(gè)組件,組件化將可重用的部分封裝起來,方便了代碼的復(fù)用,使得前端代碼變得簡潔而邏輯清晰。因此,使用Vue的組件化開發(fā)使得開發(fā)的代碼量大大減少,這也是這個(gè)框架備受青睞的原因之一。

2.其次,Vue采用虛擬DOM技術(shù)解決瀏覽器的渲染性能問題。

傳統(tǒng)開發(fā)模式上,JS操作DOM時(shí),瀏覽器會(huì)馬上從構(gòu)建DOM樹開始從頭到尾執(zhí)行一遍流程,DOM有多少次變化就直接執(zhí)行多少次流程,性能消耗巨大,雖然硬件條件或?yàn)g覽器在不斷地更新迭代,當(dāng)頻繁操作DOM樹后,還是有可能出現(xiàn)頁面卡頓或崩潰的現(xiàn)象。

而采用虛擬DOM技術(shù)時(shí),當(dāng)虛擬節(jié)點(diǎn)準(zhǔn)備映射到視圖的時(shí)候,為了避免額外的性能開銷,會(huì)先和上一次的虛擬DOM節(jié)點(diǎn)樹進(jìn)行比較,最后只渲染不同的部分到視圖中,無須改動(dòng)其他的節(jié)點(diǎn)狀態(tài),因此節(jié)省了節(jié)點(diǎn)的操作,從而優(yōu)化了頁面渲染的效率。

3.再次,Vue是一個(gè)響應(yīng)式框架。

響應(yīng)式的數(shù)據(jù)渲染是現(xiàn)代前端非常重要的機(jī)制。所謂響應(yīng)式,是指當(dāng)數(shù)據(jù)改變后,Vue會(huì)通知使用該數(shù)據(jù)的代碼,從而改變所有使用到該數(shù)據(jù)的數(shù)據(jù),進(jìn)而使關(guān)聯(lián)對應(yīng)數(shù)據(jù)的視圖自動(dòng)更新。例如,視圖中使用數(shù)據(jù)a、b、c,其中b和c是根據(jù)a計(jì)算出來的兩個(gè)數(shù)據(jù),通過一些操作,比如單擊某個(gè)按鈕使a的值改變了,比如a增加1,那么視圖上使用的a馬上也增加1,同時(shí)數(shù)據(jù)b和c也更新了數(shù)據(jù)并表現(xiàn)在視圖上。

4.另外,Vue 3.x的組合式API解決功能分散、難以維護(hù)的問題。

Vue 3支持采用選項(xiàng)式API,通過props、data、methods等相關(guān)配置來組織功能邏輯,使用非常簡單,易于理解,然而當(dāng)組件內(nèi)容越來越多,邏輯越來越復(fù)雜的時(shí)候,使用選項(xiàng)式API的弊端就會(huì)非常明顯,因?yàn)樗信渲枚荚谶x項(xiàng)中,相同的功能模塊分散混合在一個(gè)文件里面,其可讀性就會(huì)降低,并且難以維護(hù)。

所以Vue 3新增了組合式API語法,可以將不同的功能分開管理,將同一個(gè)功能點(diǎn)的內(nèi)容從選項(xiàng)式配置中抽離出來放到一起,最后通過setup方法統(tǒng)一調(diào)用。這樣大大地增加了代碼的可讀性,并且在變更功能內(nèi)容時(shí),很容易就能找到對應(yīng)的模塊來修改,大大提升了代碼的可維護(hù)性。

5.最后,Vue是一個(gè)輕量級的漸進(jìn)式框架。

因?yàn)閂ue的核心層只關(guān)注視圖,其他功能可以根據(jù)需要逐步引入,所以Vue的核心文件是非常小的,它是一個(gè)輕量級的框架,而新版本Vue 3更是對目前已經(jīng)非常穩(wěn)定成熟的Vue 2進(jìn)行了優(yōu)化,用TypeScript輔以組合式API,提升了整體性能以及代碼的可讀性和可維護(hù)性,源碼閱讀者也非常容易學(xué)會(huì)這個(gè)框架的精髓,開發(fā)者也非常容易入門。

所謂漸進(jìn)式,便是說開發(fā)者可以逐步地使用Vue的功能,可以快速地與第三方庫或既有項(xiàng)目整合,既可以在老項(xiàng)目中將Vue作為應(yīng)用的一部分嵌入其中,或者使用Vue替代老的框架,如jQuery,也可以在新項(xiàng)目的初期使用Vue的有限功能,后續(xù)如果希望將更多的業(yè)務(wù)邏輯使用Vue實(shí)現(xiàn),那么Vue的核心庫及其生態(tài)系統(tǒng)(如Vue+Vue-Router+Vuex)可以滿足各式各樣的需求。

主站蜘蛛池模板: 金华市| 汉源县| 盐边县| 天全县| 蓬溪县| 左权县| 通河县| 东宁县| 彭山县| 图木舒克市| 重庆市| 古浪县| 西乌| 沙田区| 乌什县| 昌江| 凤翔县| 岚皋县| 延川县| 墨脱县| 沙洋县| 承德县| 望江县| 乌拉特前旗| 东乡县| 大港区| 渭南市| 金坛市| 共和县| 淄博市| 团风县| 博湖县| 获嘉县| 石泉县| 高雄县| 湘潭县| 辽阳市| 双牌县| 两当县| 进贤县| 星子县|