今天是2021年10月13日锦庸,目前最適合移動端跨端開發(fā)的答案的確是Google開發(fā)的Flutter
Flutter
它有如下優(yōu)點:
- 漸進式開發(fā)机蔗,作為部分頁面嵌入到已有程序中(我認為最大的優(yōu)點)
- 和原生代碼進行相互調(diào)用,解決移動操作系統(tǒng)新版本發(fā)布導致API變化,但是flutter自身API沒更新的問題
- flutter自己保證了數(shù)據(jù)邏輯的雙端一致性萝嘁。
- 開源
- 社區(qū)活躍
- 國際化
- 圖片尺寸適配
聽說的缺點:
- 代碼嵌套有點難受
- 因為沒有實際進行過開發(fā)梆掸,只是比較占內(nèi)存,有時候有點可接受的卡牙言。
Flutter的UI采用的是直接把控件的樣式當做圖片繪制到屏幕上的方案酸钦,類似于DirectUI(Windows QQ),WPF咱枉,UWP卑硫,QT等無控件繪制方案,后面提到的幾個都蚕断,
MAUI
另外一個Microsoft正在開發(fā)的MAUI拔恰,也稱為一次開發(fā)多個平臺,今天特地把他的源碼下載下來研究基括,它的界面控件是原生控件颜懊。MAUI的思路是,利用xaml來描述抽象的界面风皿,解析xaml的時候河爹,創(chuàng)建不同平臺的實例, 然后利用C#來寫事件。
在移動端桐款,MAUI借助的是比較成熟的.net庫(xamarin.ios或者xmarian.android)來創(chuàng)建不同平臺實例咸这。
如果發(fā)布正式版,它的UI性能是最好的魔眨,因為是原生的控件媳维,調(diào)試階段不會有性能問題因為C#性能本身很好,在發(fā)布的時候C#代碼會被編譯成本機代碼遏暴,無需.net運行環(huán)境侄刽。
它的一些特性如下
是否支持漸進式開發(fā),在已有的開發(fā)項目中開發(fā)部分頁面
還不支持是否支持和原生代碼的相互調(diào)用
理論上支持朋凉,但是現(xiàn)在沒有看到實際的例子州丹,說理論上支持的原因是C#和C語言的互操作已經(jīng)是非常成熟了,加上xamarin.ios中發(fā)現(xiàn)存在對C語言操作的實例杂彭,比如objc_msgsend,或者其他C形式的iOS API-
是否支持操作系統(tǒng)新特性更新
比較容易支持墓毒,拿iOS(不懂Android)為例子,原因包含1. responseToSelector亲怠,performSelector, iOS版本判斷所计,這三個函數(shù)在MAUI中可以使用 2. xamarin.ios的源碼比較容易修改 3. 如果不想修改xamarin.ios源碼,**也許**可以采用C#語法的擴展類方法來實現(xiàn)团秽,因為大部分的API到最后都根據(jù)函數(shù)名轉(zhuǎn)發(fā)給了obj_msgsend
如果MAUI也支持漸進式開發(fā)主胧,我想我會選擇它吧钾腺,不過Flutter發(fā)展的太快,不知道等不等得到MAUI的發(fā)布讥裤。