經常看見在vue或者angular的介紹里說自己的特色是雙向數據綁定,而在看react的介紹中,說自己的優勢和特色是單向數據綁定。
雙向和單向只不過是框架封裝程度上的差異,本質上兩者是可以相互轉換的。
更多討論見知乎:https://www.zhihu.com/question/49964363
1.單向數據綁定
單向數據綁定的優點:
單向數據流,所有狀態變化都可以被記錄、跟蹤,狀態變化通過手動調用通知,源頭易追溯,沒有“暗箱操作”。
同時組件數據只有唯一的入口和出口,使得程序更直觀更容易理解,有利於應用的可維護性。
單向數據綁定缺點:
則是代碼量會相應的上升,數據的流轉過程變長,從而出現很多類似的樣板代碼。
同時由於對應用狀態獨立管理的嚴格要求(單一的全局store),在處理局部狀態較多的場景時(如用戶輸入交互較多的“富表單型”應用),會顯得啰嗦及繁瑣。
同時組件數據只有唯一的入口和出口,使得程序更直觀更容易理解,有利於應用的可維護性。
單向數據綁定缺點:
則是代碼量會相應的上升,數據的流轉過程變長,從而出現很多類似的樣板代碼。
同時由於對應用狀態獨立管理的嚴格要求(單一的全局store),在處理局部狀態較多的場景時(如用戶輸入交互較多的“富表單型”應用),會顯得啰嗦及繁瑣。
2.雙向數據綁定
雙向數據綁定的優點:
在表單交互較多的場景下,會簡化大量業務無關的代碼。
雙向數據綁定缺點:
“暗箱操作”,無法追蹤局部狀態的變化
兩者並不互斥,實際上,在ng2中你可以非常方便的同時使用兩者。全局性數據流使用單向,好跟蹤。局部性數據流使用雙向,簡單。
// v-model 單向數據 實現雙向綁定 <input type="text" v-bind:value="msg" v-on:input="msg = $event.target.value">