雪花台湾

跨平台weex、rn、flutter怎麼選吶?怎麼說出有說服力的理由?都可以學,都火都有坑怎麼選吶?

能熟練使用vue

以前用過weex,能直接上手,比較傾向。但是這不是個有說服力的理由。而且好像已經不維護了。

flutter看著和java有點像。有點java基礎。感覺可以嘗試。

rn:挺火的。但是facebook好像自己都不用了。

怎麼選吶?

我都可以學可以用。都火,也都有坑。怎麼選吶?

怎麼說出有個說服力的理由?專業的理由?


每種解決方案都有他的應用場景,關鍵看你要幹什麼事情,如果單純學習而不是滿足業務,那麼優先 flutter 好了


我之前寫過一篇文章,講解我編程多年使用過的那些跨平台技術,你說的這幾個還是最近幾年的跨平台技術。從早期的Cordova到現在的Flutter,從SmartTV到Android、iOS、MacOS以及Windows(還有死去的Windows Phone,我可愛的Lumia 720隻能變成老年機了)。從事編程那些年經歷的跨平台開發工具框架包括:Cordova,Xamarin,Titanium,NativeScript,React Native,Electron,uni-app,Flutter,我做了一個詳細的來龍去脈的分析以及優缺點對比,花了一個通宵整理的。

我在這裡只挑選部分做一個說明:

React Native(底層使用React)

小弟算是第一批把React Native用在生產環境上的人(當時是0.0.3版,第一個public版,想想我當時膽子還真大)。

ReactNative沒有像NativeScript一樣做反射,而是建構了一組RCTBridge,用來做js跟native之間的交互,要使用native API或native 組件的話都要在native層做橋接,然後導入到js裡面(類似你寫Node的C++ addon的感覺)。

優點:

缺點:


Weex(底層使用Vue)

weex資料太少了,我就不做介紹了,反正我是踩過坑的,後來放棄weex了,文檔不齊全,API缺少,擴展功能不完善,性能也好不到哪裡。。。


Flutter

Flutter是谷歌推出的一個全新的高性能高一致性的跨平台的開發框架。

【優點:】

【缺點:】

如果不熟悉原生開發,第三方包滿足不了你的需求的時候,那麼就需要你自己去寫或修改已有的插件,這個需要學習一點原生開發的知識(其實這也是很多跨平台技術必不可少的步驟),當然如果你們公司有android或ios的程序員,可以讓他們協助寫一個插件,這對於他們來說都是小問題。

詳情可以看我寫的文章:

AWeiLoveAndroid:從事編程那些年經歷的跨平台開發工具框架演變歷史?

zhuanlan.zhihu.com

RN、Weex採用的技術方案大體相同,它們都使用JavaScript作為編程語言,然後通過中間層轉換為原生的組件後再利用Native渲染引擎執行渲染操作。而Flutter直接使用skia來渲染視圖,而Flutter Widget則使用現代響應式框架來構建,和平台沒有直接的關係。就目前跨平台技術來看,JavaScript在跨平台開發中可謂佔據半壁江山,大有「一統天下」的趨勢。

從性能方面來說,Flutter的性能理論上是最好的,RN和Weex次之,並且都好於傳統的WebView方案。但從目前的實際應用來看卻並沒有太大的差距,特別是和0.5.0版本以上的RN對比性能體驗上差異並不明顯。

總的來說,Flutter最好,RN次之,但是還有很多老項目在用,再說一句,這幾個技術我都寫了書,可以京東去找,希望對你有所幫助


對比過好些個跨平台,得出結論:

便利和性能總是不可協調

便利的如weex和rn,思路差不多,js框架不同,且weex技術支持遠比不上rn

(更便利的uniapp,內置weex,好像什麼都能打,但性能犧牲更大)

性能好的如Flutter,語言和引擎都是自己搞的,性能吹得很牛逼,但寫起來一層套一層,還對布局規則作出很多限制,適合特定使用場景

(性能怎麼都比不上原生Native)

後面又找,發現一個跨平台框架排名網站:

https://www.cyanhall.com/cn/top/cross-platform-framework/?

www.cyanhall.com

找到了排第六的Quasar Framework,github介紹如下:

Build high-performance VueJS user interfaces in record time: responsive Single Page Apps, SSR Apps, PWAs, Browser extensions, Hybrid Mobile Apps and Electron Apps. If you want, all using the same codebase!

翻譯:在紀錄時間內構建高性能的VueJS用戶界面:響應式單頁應用,服務端渲染應用,谷歌小程序,瀏覽器插件,混合移動端應用,桌面級應用

總結:框架採用Vue,集成了Cordova(安卓和ios開發)、inoic Capacitor(更現代的Cordova替代方案)和Electron(電腦桌面端開發),提供Material風格的UI

比起學習成本更高的RN和Flutter,這個性價比對答主來說是不錯的

另外總結了一份跨平台方案的思維導圖:(更多前端導圖總結,公號後台回「前端思維導圖」,會保持更新,by 【鏈接船】)


公司用RN,自己用flutter,準備學swift


我理解這個問題應該是:學哪個又更好的職業發展機會。

我的答案是:不要糾結,技術是為業務服務的,不要拘泥於技術站隊。業務總是要求交付效率提升,跨端技術是必走之路。人才市場的需求是一直存在並且旺盛的。了解一種,或是多種跨端技術只是個人競爭力的多少的問題

我是先學習的 RN,之後學習了 Flutter。推薦一下我的 Flutter 學習經歷整理:

弗蘭克:兩天時間,用 Flutter 寫出一個股票分析客戶端?

zhuanlan.zhihu.com

我用過rn開發過實際項目。

簡單入門過flutter,感覺也還行。

但如果你之前是前端,感覺還是rn好點,雖然各種人吐槽,但是常規業務來說,rn的開發速度,真的不要太快。


專業iOS 開發,目前從原生轉到Flutter開發,公司項目


推薦閱讀:
相关文章