Flutter值得原生開發(fā)借鑒的地方
首先這個標(biāo)題是別人問我的問題。
剛聽到這個問題頓時就蒙了委造,這是站在多高的高度才能回答的大佬的問題职祷。其實也是個開放前瞻性的問題。
我的回答是從Dart語言本身的優(yōu)點出發(fā)酬诀。后來靜下來仔細想想,Dart跟其他語言(如Swift或Kotlin)比起來在語法方面并沒有什么優(yōu)勢骆撇。晴天霹靂瞒御。
布局熱加載
在熱加載之后不需要重新導(dǎo)航到之前的頁面,這比Android的Instant Run不知道要領(lǐng)先多少年艾船。
反應(yīng)式的編程風(fēng)格(類似MVVM)
當(dāng)發(fā)生事件變更時葵腹,在“全局狀態(tài)”里更新這些值高每,并讓Flutter進行UI重繪屿岂。Flutter將自動更新文本標(biāo)簽的值践宴。這也是React等框架具備的。
一切都是widget爷怀,組件化
在Android和iOS上阻肩,部件所對應(yīng)的就是各種View類。
Flutter采用了不同的概念运授,部件不僅僅是結(jié)構(gòu)化的元素烤惊。Flutter的部件架構(gòu)更多地使用了組合,而不是繼承吁朦,所以部件架構(gòu)更加強大和靈活柒室。遵循組合大于集成的原則,F(xiàn)lutter從簡單的元部件開始逗宜,可以構(gòu)建出非常復(fù)雜的部件雄右。Flutter的Container Widget就是由一系列元部件組成的。
編譯成本地代碼
Flutter的應(yīng)用被編譯成本地代碼纺讲,所以性能方面不存在問題擂仍。事實上,我認為它比Java或Swift更適合用來開發(fā)游戲應(yīng)用熬甚。使用反應(yīng)式編程風(fēng)格開發(fā)的UI代碼更加清晰逢渔,再加上良好的性能,非常適合用來開發(fā)游戲乡括。
這也是比reactnative優(yōu)越的地方肃廓,rn的話還是要轉(zhuǎn)化為原生的view,這樣每次轉(zhuǎn)化是有性能消耗的诲泌,但是Flutter直接編譯成機器語言盲赊,這樣就相當(dāng)于執(zhí)行原生代碼了。
跨平臺
這個就不用說了档礁。