2018年DartConf,谷歌推出了“業務邏輯組件”,即BLoC的開發模式。它的理念是在盡可能將業務邏輯隔離在純Dart代碼中,這樣就能打造在移動和Web平台之間共享的代碼庫。通過本文作者的介紹,你會發現,如果能正確實現,BLoC會大大縮短創建移動/Web應用所需的時間。
去年年中,我想把一個Android應用移植到iOS和Web上。我打算在移動平台上用Flutter,Web端該選擇什麼沒有想好。
雖說我對Flutter是一見鍾情,但也還是對它有些看法:Flutter的InheritedWidget或Redux(及其所有變體)在小部件樹上傳播狀態時的確做的不錯;但是對於Flutter這樣的新框架來說,你會期望視圖層的響應性能更多一些——比如,希望小部件本身是無狀態的,並根據從外部反饋的狀態來更改,但實際上並非如此。另外,Flutter彼時只支持Android和iOS,但我還想發佈到Web上。我的應用中已經有大量的業務邏輯了,我想盡可能地複用它,可是更改一次業務邏輯卻至少要更改兩個位置的代碼實在讓人無法接受。
我開始研究該如何解決這個問題,然後就遇到了BLoC。作為快速了解,建議你在有空的時候觀看“Flutter/AngularDart——代碼共享,一起用更好(DartConf 2018)”這個視頻。
BLoC模式
BLoC是谷歌發明的一個花哨的名詞,意為“業務(b…