国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

前端 Vue.js 和 MVVM 詳細介紹

2019-11-02 16:47:36
字體:
來源:轉載
供稿:網友

MVVM 是Model-View-ViewModel 的縮寫,它是一種基于前端開發的架構模式,其核心是提供對View 和 ViewModel 的雙向數據綁定,這使得ViewModel 的狀態改變可以自動傳遞給 View,即所謂的數據雙向綁定。

Vue.js 是一個提供了 MVVM 風格的雙向數據綁定的 JavaScript 庫,專注于View 層。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel負責連接 View 和 Model,保證視圖和數據的一致性,這種輕量級的架構讓前端開發更加高效、便捷。 

為什么會出現 MVVM 呢?

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

MVC 即 Model-View-Controller 的縮寫,就是 模型-視圖-控制器 , 也就是說一個標準的Web 應用程式是由這三部分組成的:

View 用來把數據以某種方式呈現給用戶。 Model 其實就是數據。 Controller 接收并處理來自用戶的請求,并將 Model 返回給用戶。

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

2010年到2011年,Html5概念被熱炒,受到追捧,2012年,W3C 正式宣布HTML5規范已經正式定稿。2013年我剛進公司就接觸了第一個 HTML5 框架 Sench touch, 它是一款用來構建移動應用的HTML5 框架,它將前后端徹底分離,前端采用MVC 架構,作為一個獨立的項目工程來維護。

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

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

既然要用H5 來構建 App, 那View 層所做的事,就不僅僅是簡單的數據展示了,它不僅要管理復雜的數據狀態,還要處理移動設備上各種操作行為等等。因此,前端也需要工程化,也需要一個類似于MVC 的框架來管理這些復雜的邏輯,使開發更加高效。 但這里的 MVC 又稍微發了點變化:

View UI布局,展示數據。 Model 管理數據。 Controller 響應用戶操作,并將 Model 更新到 View 上。

這種 MVC 架構模式對于簡單的應用來看起是OK 的,也符合軟件架構的分層思想。 但實際上,隨著H5 的不斷發展,人們更希望使用H5 開發的應用能和Native 媲美,或者接近于原生App 的體驗效果,于是前端應用的復雜程度已不同往日,今非昔比。這時前端開發就暴露出了三個痛點問題:

1、開發者在代碼中大量調用相同的 DOM API, 處理繁瑣 ,操作冗余,使得代碼難以維護。

2、大量的DOM 操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗。

3、當 Model 頻繁發生變化,開發者需要主動更新到View ;當用戶的操作導致 Model 發生變化,開發者同樣需要將變化的數據

同步到Model 中,這樣的工作不僅繁瑣,而且很難維護復雜多變的數據狀態。
其實,早期jQuery 的出現就是為了前端能更簡潔的操作DOM 而設計的,但它只解決了第一個問題,另外兩個問題始終伴隨著前端一直存在。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江源县| 来凤县| 马尔康县| 大同市| 科尔| 平潭县| 涿鹿县| 含山县| 高雄市| 抚州市| 大冶市| 全南县| 长葛市| 旅游| 英吉沙县| 中阳县| 兴化市| 乌兰察布市| 韩城市| 桂平市| 汪清县| 尼勒克县| 西畴县| 大洼县| 登封市| 青海省| 泾川县| 石景山区| 寿光市| 嘉兴市| 扎鲁特旗| 寿阳县| 甘孜| 兴安县| 武定县| 舒兰市| 琼结县| 晋城| 长阳| 壤塘县| 夹江县|