單和雙向綁定使用場景

問題提出

https://www.zhihu.com/question/49964363html

vue或者angular的介紹裏說本身的特點是雙向數據綁定,而在看react的介紹中,說本身的優點和特點是單向數據綁定。vue

 

vue 和 angularjs支持雙向綁定, 可是單向綁定是基本功能, 與react同基礎。react

那麼什麼狀況下,使用單向綁定, 什麼狀況下使用雙向綁定呢?angularjs

 

概念

https://www.cnblogs.com/Breaveleon/p/6680175.htmlredux

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

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

雙向數據綁定:數據模型(Module)和視圖(View)之間的雙向綁定。spa

用戶在視圖上的修改會自動同步到數據模型中去,一樣的,若是數據模型中的值發生了變化,也會馬上同步到視圖中去。雙向綁定

 

選擇考慮點

https://www.zhihu.com/question/49964363htm

一、單向綁定使得數據流也是單向的,對於複雜應用來講這是實施統一的狀態管理(如redux)的前提。

二、 雙向綁定在一些須要實時反應用戶輸入的場合會很是方便(好比多級聯動菜單)。

三、 全局性數據流使用單向,好跟蹤。局部性數據流使用雙向,簡單。

四、若是你的程序須要一個統一的數據源, 應該選擇單向數據流, 全部的數據變化都是可觀測的, 數據自上而下流動, 即便出問題也很容易找到源頭.

若是你的程序自己有多個數據源, 或者是程序的邏輯自己會產生不少的反作用, 應該選擇雙向綁定的程序, 將大項目分化爲小項目, 逐個擊破.

 

單向與雙向聯繫

https://www.zhihu.com/question/49964363

再來看 flux 的這張圖
若是咱們作進一步封裝,把 action 跟 dispatcher 都隱藏在框架內部,最後圖就變成這樣了
若是再進一步,把相互手動通知的機制再隱藏起來,變成這樣了
這個不就是 mvvm 裏面的雙向綁定麼(手動尷尬)。。。
相關文章
相關標籤/搜索