Vue單向數據綁定和雙向數據綁定

單向數據綁定:指的是我們先把模板寫好,然後把模板和數據(數據可能來自後臺)整合到一起形成HTML代碼,然後把這段HTML代碼插入到文檔流裏面。

在這裏插入圖片描述

單向數據綁定缺點:HTML代碼一旦生成完以後,就沒有辦法再變了,如果有新的數據來了,那就必須把之前的HTML代碼去掉,再重新把新的數據和模板一起整合後插入到文檔流中。

雙向數據綁定:數據模型(Module)和視圖(View)之間的雙向綁定。
在這裏插入圖片描述

用戶在視圖上的修改會自動同步到數據模型中去,同樣的,如果數據模型中的值發生了變化,也會立刻同步到視圖中去。
雙向數據綁定的優點是無需進行和單向數據綁定的那些CRUD(Create,Retrieve,Update,Delete)操作
雙向數據綁定最經常的應用場景就是表單了,這樣當用戶在前端頁面完成輸入後,不用任何操作,我們就已經拿到了用戶的數據存放到數據模型中了。
目前。實現雙向數據綁定的前端框架主要有AngularJS,VueJS(通過引入vuex來實現單項的數據監控)等

大名鼎鼎的angular實現雙向綁定的原理就是通過$watch來進行髒檢查,但是這種髒效率很如果是大量的檢查那就不敢想象了。

單項數據和雙向數據使用的場景

單向綁定的優點是相應的可以帶來單向數據流,這樣做的好處是所有狀態變化都可以被記錄、跟蹤,狀態變化通過手動調用通知,源頭易追溯,沒有「暗箱操作」。同時組件數據只有唯一的入口和出口,使得程序更直觀更容易理解,有利於應用的可維護性。缺點則是代碼量會相應的上升,數據的流轉過程變長,從而出現很多類似的樣板代碼。同時由於對應用狀態獨立管理的嚴格要求(單一的全局store),在處理局部狀態較多的場景時(如用戶輸入交互較多的「富表單型」應用),會顯得囉嗦及繁瑣。

基本上雙向綁定的優缺點就是單向綁定的鏡像了。優點是在表單交互較多的場景下,會簡化大量業務無關的代碼。缺點就是由於都是「暗箱操作」,我們無法追蹤局部狀態的變化(雖然大部分情況下我們並不關心),潛在的行爲太多也增加了出錯時 debug 的難度。同時由於組件數據變化來源入口變得可能不止一個,新手玩家很容易將數據流轉方向弄得紊亂,如果再缺乏一些「管制」手段,最後就很容易因爲一處錯誤操作造成應用雪崩。 最後總結我們要通過自己的業務場景合理的選擇