我的快速APP開發選型

dreampursuer發表於2024-07-08

圖片

作為獨立開發者,我們的時間非常寶貴。快速將一個創意轉化為產品,並驗證其市場需求,是成功的關鍵。這意味著,我們需要選擇合適的技術棧,以便迅速開發出一個最小可行產品(MVP),並測試其產品市場契合度(PMF)。在這篇文章中,我將分享幾種技術選擇的優缺點,幫助你在開發過程中做出明智的決定。

技術候選者

  1. uni-app

  2. uni-app X

  3. React Native

  4. Flutter

  5. Kotlin Multiplatform Mobile (KMP)

uni-app

uni-app在開發App時基本上是透過Webview的方式來實現跨平臺app的開發的。

優點:

  • 成熟度高:適合開發H5頁面和小程式,快速實現功能。

  • 豐富的元件:提供了很多小元件,可以直接使用,搭建UI非常方便。

  • 簡易導航:導航和路由設定簡單,不需要額外引入導航庫。

缺點:

  • 效能問題:對於複雜的APP,效能可能成為瓶頸。

  • 無法處理本地二進位制檔案:在處理本地二進位制檔案時,存在一定的侷限性。

uni-app X

uni-app X為了解決開發app時用webview方式模擬時碰到的效能問題和本地app功能問題而提出的,其解決方案是用類似typescript語言的uts語言,把這個語言轉譯成各個平臺語言,比如android中轉譯成kotlin語言,在ios中轉譯成swift語言,從而達到高效能和碰到無法解決的app呼叫問題時直接用類似原生語言的方式來實現。

優點:

  • 效能最佳化:為了解決uni-app的效能問題,特別是在跨平臺開發時,基於自定義的TypeScript指令碼語言,轉編譯為目標平臺程式碼。

  • 相容性好:大部分相容uni-app。

缺點:

  • 部分功能缺失:例如錄音功能在uni-app X中缺失。

  • 外掛收費:很多系統功能沒有提供,需要開發者開發外掛,而許多外掛是收費的。

React Native

優點:

  • 效能較好:對於大部分應用型別的APP,效能沒有明顯問題。

  • 社群支援:擁有豐富的第三方庫和社群支援。

缺點:

  • 環境複雜:需要同時配置安卓和iOS環境,引入第三方庫時需要進行復雜的配置。

  • 升級麻煩:React Native和第三方庫的升級需要手動處理。

不過目前採用expo的方式對於上面的環境配置部分會友好很多,可是對於我的APP中需要引入第三方native library來講還是稍微複雜一點。

Flutter

Flutter採用自己繪製的方式來實現跨平臺中UI的一致性和高效能,有點類似Unity或之前Java中的Swing原理。

優點:

  • 效能良好:對於一般應用型別的APP,效能沒有大問題。

缺點:

  • 學習曲線:需要學習Dart語言,UI介面搭建時巢狀較多。

Kotlin Multiplatform Mobile (KMP)

KMP和uniapp X屬於類似的思路,只是KMP用kotlin來實現,同時對於android平臺已經用kotlin實現了,所以它只要再轉譯成swift就可以,都是呼叫本地語言來實現app的功能。

優點:

  • 成熟度高:在安卓平臺上比較成熟,學習成本低於Dart。

  • 自然的UI編寫:相對Flutter,UI編寫更加自然。

缺點:

  • 不夠成熟:很多元件需要自己開發,外部外掛支援不夠完善。

我的技術選擇

基於以上討論,我的策略是:

  1. 快速開發階段:使用uni-app進行介面和功能的快速搭建,不考慮效能問題,專注於實現功能。

  2. 驗證階段:在遇到效能問題或功能限制時,考慮使用React Native進行重構。React Native相對成熟,並且我對其較為熟悉,能夠更快地解決問題。

結論

對於獨立開發者來說,選擇合適的技術棧至關重要。uni-app適合快速開發原型,React Native適合進一步的效能最佳化和功能擴充套件。其他技術如uni-app X、Flutter和KMP則根據具體需求和熟悉程度選擇。

希望這篇文章能幫助你在開發過程中做出更明智的技術選擇,加快開發程序,驗證你的創意。

相關文章