首頁>技術>

跨平臺開發是軟體開發中一個重要的概念,即不依賴於作業系統,也不依賴硬體環境。一個作業系統下開發的應用,放到另一個作業系統下依然可以執行,所以近年來被廣泛運用。

▶️ App開發的幾種方式

1.原生App開發(Native App, 本地應用程式,包內頁面);

2.網頁應用程式(Web App,移動Web,包內頁面);

3.採用Hybrid混合框架開發(Hybrid App,混合應用程式,雲端一體);

4.採用React Native,Flutter ,uni-app和Weex等混合框架開發(混合App,包內頁面)。

▶️ 各種開發方式的優缺點

1.原生開發

• 優點:效能和體驗都是最好的,實現華麗的動畫,流暢度最好,手機上的功能可以全部訪問,許可權比較大。

• 缺點:開發和釋出成本高。

若是你對你應用的效能和使用者體驗要求很高,最好進行原生開發,原生開發沒有技術限制,並且應用市場原生開發還是佔著主導地位的。

2.Web App

• 優點:開發和釋出成本最低,方便更新。

• 缺點:效能和體驗不能講是最差的,但也受到瀏覽器處理能力的限制;每個頁面都需要重新載入,所以網路佔用較高些。不適合大型應用。

3.Hybrid App

• 優點:開發和釋出都比較方便,效率介於Native App、Web App之間。對Android、iOS技術要求不高,App的殼極少更新,做到App一年及以上不更新,頁面隨時可以更新。

• 缺點:頁面都在雲端,第一次開啟頁面需要從雲端拉取,速度不如原生的和RN等App慢;需要原生配合,容易產生記憶體問題。

4.混合框架開發

• 優點:效率體驗接近Native App,釋出和開發成本低於Native App。

• 缺點:有一定學習成本,且文件較少,免不了踩坑。

▶️ 跨平臺原理

1.語言層面編譯轉換,編譯成C語言或者位元組碼之類的,能夠執行在不同的裝置上面,但是這個語言轉換過程很複雜,而且還需要做移植的工作。比如著名的:swiftUI,Kotlin Native就是這型別的跨平臺框架。

2.自帶渲染引擎,不依賴於任何平臺,一套程式碼就可以自動編譯成多個平臺的應用程式。比如:Flutter。

3.中轉型別的框架,使用JS銜接原生平臺的一些功能,要麼由社群開發者自己維護一套擴充套件相容庫,要麼本身帶有一系列的相容庫,但是還是擺脫不了Web的環境和程式設計思想,全部依賴於JS,這型別的框架有:React Native,Weex,H5+App以及uni-app。

▶️ 市面主流跨平臺框架

1.React Native(簡稱RN)

React Native是Facebook於2015年釋出的開源、跨平臺的應用開發框架。作為2013年舉辦的一場內部黑客馬拉松的產物,它已經成為最受歡迎的原生App開發替代方案之一,獲得了超過89700 Github星標。

React Native讓開發者使用JavaScript和React編寫應用,利用相同的核心程式碼就可以建立Web,iOS和Android平臺的原生應用。React Native著力於提高多平臺的開發效率——僅需學習一次,編寫任何平臺(Learn Once, Write Anywhere)。

2.Flutter

它在Google I/O 2017上宣佈,並於2018年釋出,對於跨平臺的世界來說,它現在仍然是一個“新人”。但儘管如此,它已經獲得了超過99300 Github星標和絕大多數工程師將其稱為2019年Stack Overflow調查中最受歡迎的三個框架之一。

Flutter是面向iOS和Android應用,提供一套基礎程式碼(使用Dart語言)的高效能高可靠軟體開發工具包,使開發者能夠在iOS和Android兩個主要的移動平臺上,打造統一程式碼的高效能應用。

3.uni-app

4.Weex

Weex致力於使開發者能基於通用跨平臺的Web 開發語言和開發經驗,來構建Android、iOS 和 Web 應用。簡單來說,在集成了WeexSDK之後,可以使用JavaScript語言和前端開發經驗來開發移動應用。

▶️ 技術學習成本和難度

RN:要求開發者學習React,要求精通Flex佈局,要求原生開發協作。

Flutter :要求開發者學習Dart,了解Dart和Flutter的API、要求精通Flex佈局,要求原生開發協作。

uni-app:要求開發者學習Vue,了解小程式。很明顯uni-app的學習成本太低了,它沒有附加專有技術,全部使用公共技術。

學習成本和難度,直接意味著:開發成本、招聘成本、上線速度、上線風險。另外,Dart究竟值不值得學,前景如何也是一個大問題。

▶️ 生態

任何開發引擎,都離不開生態。對於國外的開發者,RN、Flutter的生態肯定比uni-app好,比如Facebook登陸分享、Google地圖等。

但對於國內的開發者,那是反過來的,中國開發者需要的全端推送(unipush集成了iOS、華為、小米、OPPO等眾多原廠推送)、各種國內登陸、支付、分享SDK、各種國內地圖、各種UI庫等,都是在uni-app體系裡,這方面生態可比RN、Flutter豐富多了。

Flutter

• 優勢:效能相對好一些。比RN有優勢,但比擁有BindingX的Weex/uni-app,在實際開發中沒有很明顯的差距。

• 劣勢:需要原生協作,維護3套程式碼,無法有效降低開發成本,提升開發效率,不支援熱更新;原生可視控制元件融合不好,比如Webview、Video、Map;學習成本高。

RN

• 優勢:RN的坑雖然比Weex的少,但uni-app已經填了Weex的很多坑。這方面差別不大;RN的生態雖然比Weex豐富。但比不上uni-app,uni-app的國內應用生態豐富度超過了RN。RN是純單頁的,嵌入原生App比較靈活。而uni-app是應用整體的概念,如果要內嵌入其他原生應用的話,要求原生應用內嵌uni-app應用整體進來。

• 劣勢:需要原生協作,維護3套程式碼,無法有效降低開發成本,提升開發效率;不支援小程式,釋出到H5也無法直接發;學習成本高,用人成本高;另外React在中國的市場佔有率遠不如Vue。這也是中國與國外不同的特色情況。

▶️ 總結

如果原生App中部分不要求動態性、也沒有太多原生互動的頁面,可以嘗試使用Flutter實現。

如果你開發uni-app選用了Weex原生渲染,那App的效能足夠好,且你得到了切實的開發效率的提升、成本的下降、快速和低風險的上線。選擇跨平臺工具而不是原生開發,可以嘗試使用uni-app。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 使用SAP Spartacus快速建立一個電商店鋪網站