999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Web前端中基于MVVM框架的技術(shù)應(yīng)用研究

2020-12-28 01:59:13朱海萍丁西劉鏈
科技資訊 2020年30期

朱海萍 丁西 劉鏈

摘? 要:在互聯(lián)網(wǎng)技術(shù)日新月異的今天,隨著Web技術(shù)的不斷發(fā)展,以前的技術(shù)無(wú)法滿足日趨復(fù)雜的Web應(yīng)用,如果還在使用之前老的框架,對(duì)View層的操作就會(huì)難以維護(hù),這就是前端框架要不斷演變的主要原因,前端MVVM框架應(yīng)運(yùn)而生,前端模塊化開(kāi)發(fā)模式成為現(xiàn)在的主流。該文將重點(diǎn)介紹MVVM框架的發(fā)展由來(lái)、MVVM模式的工作原理以及和傳統(tǒng)的MVC模式進(jìn)行對(duì)比、前端主流MVVM框架的對(duì)比、詳細(xì)分析MVVM框架的關(guān)鍵技術(shù)以及優(yōu)勢(shì)所在。

關(guān)鍵詞:MVC? MVVM? VUE? Web前端

中圖分類(lèi)號(hào):TP393.09? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-3791(2020)10(c)-0008-03

Abstract: With the rapid development of Internet technology today, with the continuous development of web technology, the previous technology cannot meet the increasingly complex web applications. If you still use the old framework before, the operation of the View layer will be difficult to maintain. This is the front end the main reason for the continuous evolution of the framework is that the front-end MVVM framework came into being, and the front-end modular development model has become the mainstream. This article will focus on the origin of the development of the MVVM framework, the working principle of the MVVM model and the comparison with the traditional MVC model. Comparison of mainstream MVVM framework, detailed analysis of the key technologies and advantages of MVVM framework.

Key Words: MVC; MVVM; VUE; Web front end

1? Web前端模式的演化

要了解MVVM模式的由來(lái),我們先來(lái)回顧下Web前端發(fā)展的歷史,在1989年,物理學(xué)家蒂姆·伯納斯·李發(fā)明了超文本標(biāo)記語(yǔ)言(HyperText Markup Language),就是現(xiàn)在我們所知道的HTML。HTML在1993年成為互聯(lián)網(wǎng)草案,最早的html就只是靜態(tài)的頁(yè)面,并不能動(dòng)態(tài)修改頁(yè)面的內(nèi)容,在1995年年底,JavaScript的出現(xiàn)將動(dòng)態(tài)去修改頁(yè)面變成了現(xiàn)實(shí),到如今的前端開(kāi)發(fā)模式我們可以分為4個(gè)階段,具體如下。

(1)js結(jié)合原生的瀏覽器API通過(guò)瀏覽器的機(jī)制,可以直接操作頁(yè)面DOM。

(2)隨著Web 2.0時(shí)代的到來(lái),Web開(kāi)發(fā)的要求不斷提升,ajax也慢慢流行起來(lái)。為了降低跨瀏覽器開(kāi)發(fā)的復(fù)雜度和考慮各種瀏覽器兼容性,很多前端類(lèi)庫(kù)(YUI、Dojo、Mootools、Prototype、jQuery)也相繼問(wèn)世,但最終還是jQuery以“寫(xiě)得更少,做得更多”,簡(jiǎn)潔、優(yōu)雅的設(shè)計(jì)特點(diǎn)勝出,迅速占領(lǐng)了世界,直到現(xiàn)在還廣泛運(yùn)用。

(3)MVC模式的誕生,隨著前端技術(shù)的發(fā)展,后臺(tái)的業(yè)務(wù)邏輯逐漸向前端轉(zhuǎn)移,只使用jquery可能無(wú)法滿足越來(lái)越復(fù)雜的業(yè)務(wù)需求,尤其在單頁(yè)面應(yīng)用上更顯得力不從心,于是Backbone.js就誕生了,作為前端MVC框架的鼻祖,讓前端開(kāi)發(fā)的價(jià)值上升了一個(gè)新的臺(tái)階。

(4)MVVM模式是Model-View-View Model模式的簡(jiǎn)稱(chēng),借鑒了MVC模式的思想,利用數(shù)據(jù)驅(qū)動(dòng)視圖,達(dá)到數(shù)據(jù)和視圖進(jìn)行完全分離,實(shí)現(xiàn)了前后端真正的分離模式,成為如今Web開(kāi)發(fā)的主流。

2? MVVM模式的思想以及與MVC的比較

MVVM模式是從MVC發(fā)展而來(lái),對(duì)比兩種模式的工作原理,了解MVC框架的缺點(diǎn)能讓我們更好地去認(rèn)識(shí)MVVM模式的優(yōu)勢(shì)所在。

2.1 MVC模式

它的原理就是界面展示與數(shù)據(jù)模型分離,修改展示界面并不需要重新編寫(xiě)業(yè)務(wù)邏輯。

Model(模型):模型存放著應(yīng)用的所有數(shù)據(jù)對(duì)象,因此包含數(shù)據(jù)和行為,模型不包含視圖與控制器之間的邏輯,但是模型提供了模型數(shù)據(jù)查詢和模型數(shù)據(jù)的狀態(tài)更新等功能。

View(視圖):對(duì)模型進(jìn)行視圖的展示,視圖是展現(xiàn)給用戶的,就是我們能見(jiàn)到的頁(yè)面。

Controller(控制器):控制器可以理解為是模型與視圖的橋梁,集中性地管理事件觸發(fā)、視圖觸發(fā),當(dāng)頁(yè)面加載完成時(shí),控制器進(jìn)行監(jiān)聽(tīng)交互,做出對(duì)視圖的選擇,委托模型更新數(shù)據(jù)。

各部分之間的通信方式如下。

View傳送指令到Controller,Controller完成業(yè)務(wù)邏輯后要求Model改變狀態(tài),Model將新的數(shù)據(jù)發(fā)送到 View,用戶得到反饋。

2.2 MVC模式的缺點(diǎn)

缺點(diǎn)一:控制層和視圖層進(jìn)行耦合,一發(fā)而動(dòng)全身,并沒(méi)有實(shí)現(xiàn)真正的分離和重用。

缺點(diǎn)二:架構(gòu)以犧牲代碼的復(fù)雜性為代價(jià),對(duì)于小項(xiàng)目降低開(kāi)發(fā)效率。

2.3 MVVM模式

View和Model層沒(méi)有直接的聯(lián)系,通過(guò)ViewModel進(jìn)行雙向交互,實(shí)現(xiàn)了真正的前后分離。

View表示我們網(wǎng)頁(yè),Model表示數(shù)據(jù)模型,因?yàn)镸VVM的控制器并不會(huì)去監(jiān)聽(tīng)瀏覽器的事件,而是監(jiān)聽(tīng)一個(gè)屬性表,由瀏覽器的事件修改屬性,以觸發(fā)控制器中的方法,增加了一層控制業(yè)務(wù)的屬性,而這層屬性被稱(chēng)為ViewModel,View與Model通過(guò)ViewModel就實(shí)現(xiàn)了雙向綁定。

MVVM模式采用雙向綁定(data-binding):View和Model之間的同步工作完全是自動(dòng)的,ViewModel通過(guò)雙向數(shù)據(jù)綁定把View層和Model層連接起,負(fù)責(zé)把Model的數(shù)據(jù)同步到View顯示出來(lái),還負(fù)責(zé)把View的修改同步回Model,所以開(kāi)發(fā)者只需要關(guān)注自己的業(yè)務(wù)邏輯。這也是MVVM的核心思想:關(guān)注Model的變化,讓MVVM框架利用自己的機(jī)制去自動(dòng)更新DOM,從而把開(kāi)發(fā)者從操作DOM的繁瑣中解脫出來(lái),不需關(guān)注數(shù)據(jù)狀態(tài)的同步問(wèn)題,也就是所謂的數(shù)據(jù)和視圖分離,數(shù)據(jù)驅(qū)動(dòng)視圖,視圖不影響數(shù)據(jù)。

2.4 MVVM的優(yōu)勢(shì)

(1)低耦合。視圖獨(dú)立Model變化和修改,一個(gè)ViewModel同時(shí)綁定到多個(gè)視圖上。

(2)可重用性。可以把View邏輯放在ViewModel里面,重用這些視圖邏輯。

(3)獨(dú)立開(kāi)發(fā)。通過(guò)MVVM,開(kāi)發(fā)人員可以專(zhuān)注于業(yè)務(wù)邏輯和數(shù)據(jù)開(kāi)發(fā)在viewModel里面,分工更加明確。

3? 前端MVVM框架的對(duì)比

如今MVVM框架成為Web開(kāi)發(fā)主流,涌現(xiàn)出了越來(lái)越多的框架,但是用數(shù)據(jù)說(shuō)話,形成了三足鼎立的一個(gè)狀態(tài),即angular.js、react.js、vue.js,每個(gè)框架都不可避免會(huì)有自己的一些特點(diǎn),現(xiàn)在主要針對(duì)三大框架進(jìn)行一個(gè)詳細(xì)的對(duì)比。

3.1 數(shù)據(jù)綁定

Angular和vue為雙向綁定,react單向綁定。

3.2 模板

Angular的模板是最強(qiáng)大的,除了自帶的、豐富的模板指令,還可以通過(guò)自定義的指令定義模板,調(diào)用的時(shí)候只需要一個(gè)指令名稱(chēng)就夠了,React模板就是JSX,JSX語(yǔ)法相當(dāng)于一個(gè)變量,相當(dāng)靈活。Vue基于HTML的模板,它的特點(diǎn)就是簡(jiǎn)潔易用。

3.3 自由度

Angular本身是一個(gè)大而全的框架,它對(duì)模塊模板路由都有很多的要求,因此自由度比較小。

React是UI層框架,JSX模板相當(dāng)于js,寫(xiě)起來(lái)自由度非常大,相當(dāng)于原生的js。

Vue追求的是靈活、簡(jiǎn)單,但還是受到一些經(jīng)典Web技術(shù)的限制,相對(duì)React自由度小一些,但其實(shí)也比較自由。

3.4 路由

Angular路由是自帶的,而Vue和React是借助別的路由工具。

React使用React-router,Vue使用Vue-router,Angular中是靜態(tài)的路由。

3.5 體積和性能

Angular框架較臃腫。gzip文件大小為143 K,而Vue為23 K,React為43 K。如果比較快慢的話,三大框架都是非常快的,我們完全不必糾結(jié)一般的應(yīng)用層面的框架性能問(wèn)題。

3.6 學(xué)習(xí)曲線

React入門(mén)簡(jiǎn)單,越深入就越難,React的語(yǔ)法使用了JSX,學(xué)習(xí)之前首先要先了解JSX語(yǔ)法,后期狀態(tài)管理Redux的理解也相對(duì)比較復(fù)雜,加上生態(tài)衍生出來(lái)的形形色色的插件就更加有難度了。

Angular在經(jīng)歷了全新版本升級(jí),使學(xué)習(xí)曲線比較陡峭,完完全全變成了一個(gè)框架,使用了很多新的概念,API文檔的理解并不是很容易,導(dǎo)致上手難度稍大,但是本身的設(shè)計(jì)目的是針對(duì)較大型的應(yīng)用,總體來(lái)說(shuō),對(duì)于新手開(kāi)發(fā)者并沒(méi)有那么友好。

Vue學(xué)習(xí)曲線相對(duì)平緩,入門(mén)相對(duì)簡(jiǎn)單,得益于中文文檔,對(duì)于國(guó)內(nèi)來(lái)說(shuō)更加友好,并且不脫離原有的 HTML、CSS、JS前端開(kāi)發(fā)習(xí)慣是它最大的特色,不需要先學(xué)習(xí)jsx語(yǔ)法或typescript的語(yǔ)法,所以學(xué)習(xí)曲線很穩(wěn),也更讓純前端人員接受和上手。

4? 結(jié)語(yǔ)

前端MVVM已成為主流,前后端分離也逐漸成為未來(lái)趨勢(shì),MVVM模式是前端模塊化、工程化的重要設(shè)計(jì)思想,在互聯(lián)網(wǎng)高速發(fā)展的今天,面對(duì)越來(lái)越復(fù)雜化的應(yīng)用場(chǎng)景,MVVM模式對(duì)前端開(kāi)發(fā)的效率有了大的提高,對(duì)于前端模塊化開(kāi)發(fā)有了質(zhì)的提升,讓前端代碼更加簡(jiǎn)潔易維護(hù)和易測(cè)試。新的技術(shù)總是接踵而至,在計(jì)算機(jī)領(lǐng)域時(shí)刻都要迎接更加優(yōu)秀的技術(shù)的來(lái)臨,讓我們一起迎接MVVM這一輪新技術(shù)的浪潮吧。

參考文獻(xiàn)

[1] 何煥春,楊懌.基于MVVM構(gòu)架的Web前端框架研究[J].電腦知識(shí)與技術(shù),2017,13(24):59-60.

[2] 顧睿.基于MVVM的虛擬DOM輕型Web前端框架的設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2019.

[3] 莫文水.Web前端中MVVM框架的應(yīng)用研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(4):64.

[4] 仝守玉.基于MVVM模式的數(shù)字員工管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2017.

[5] 彭逸帆.多用戶管理系統(tǒng)的Web前端框架研究[D].北京郵電大學(xué),2018.

[6] 程桂花.MVVM前后端數(shù)據(jù)交互中安全機(jī)制的研究與實(shí)現(xiàn)[D].浙江理工大學(xué),2017.

[7] 蘇艷.MVVM框架在Web前端的應(yīng)用研究[J].數(shù)碼世界,2017(11):67.

[8] 肖小嵐,劉振宇.基于MVVM模式的Extjs框架在前端界面設(shè)計(jì)中的應(yīng)用研究[J].電腦知識(shí)與技術(shù),2016,12(5):84-88.

[9] 孫連山,李云倩.MVVM框架在Web前端的應(yīng)用研究[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2016(2X):45-46.

主站蜘蛛池模板: 亚洲欧美自拍一区| 伊人蕉久影院| av在线人妻熟妇| 国产白浆一区二区三区视频在线| 久久夜夜视频| 国产激情第一页| 91极品美女高潮叫床在线观看| 福利在线一区| 蝴蝶伊人久久中文娱乐网| 亚洲综合专区| 日韩美毛片| 精品国产自在现线看久久| 欧美在线中文字幕| 国产在线八区| 97se亚洲综合| 999精品色在线观看| 都市激情亚洲综合久久| 亚洲一区二区三区国产精品 | 久久99蜜桃精品久久久久小说| 2020国产精品视频| 中文成人在线| 国产一区二区丝袜高跟鞋| 亚洲黄色高清| 欧美性色综合网| 国产毛片网站| 美女无遮挡免费视频网站| 中文字幕2区| 久久五月天综合| 亚洲高清日韩heyzo| 国产丰满成熟女性性满足视频| 激情在线网| 精品一区二区三区视频免费观看| 在线观看无码av五月花| 欧美激情,国产精品| 2020精品极品国产色在线观看| 色国产视频| 热伊人99re久久精品最新地| 特级欧美视频aaaaaa| 精品无码视频在线观看| 国产在线自在拍91精品黑人| 99福利视频导航| 日韩区欧美国产区在线观看| 亚洲午夜综合网| 欧美97色| 亚洲欧美不卡视频| 在线播放真实国产乱子伦| 亚洲无码日韩一区| 香蕉久人久人青草青草| 成人免费网站久久久| 久久亚洲综合伊人| 九色免费视频| 国产97视频在线观看| 在线观看欧美精品二区| 粗大猛烈进出高潮视频无码| 狠狠综合久久| 成人在线不卡视频| 国产精品香蕉| 国产av色站网站| 国产精品高清国产三级囯产AV| 亚洲中文字幕久久精品无码一区| 国产网站免费| 黄色网在线| 一级看片免费视频| 最新精品国偷自产在线| 国产亚洲高清视频| 国产高清在线丝袜精品一区| 亚洲欧美日韩另类在线一| 尤物特级无码毛片免费| 亚洲动漫h| 欧美久久网| 免费毛片在线| 日韩精品亚洲人旧成在线| 国产精品视频3p| 日本精品一在线观看视频| 日韩精品一区二区三区swag| 国产精品区视频中文字幕| 国产黄网永久免费| 国产成人精品午夜视频'| 青青国产视频| 国产欧美日韩91| 亚洲性色永久网址| 国产亚洲一区二区三区在线|