2020年了,跨平臺開發框架現在怎樣了?

来源:https://www.cnblogs.com/powertoolsteam/archive/2020/04/02/12617362.html
-Advertisement-
Play Games

轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 原文出處:https://dzone.com/articles/cross-platform-mobile-development-2020-trends-and 多年來,跨平臺移動開發已經獲得了最流行軟體開 ...


轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。

原文出處:https://dzone.com/articles/cross-platform-mobile-development-2020-trends-and

 

多年來,跨平臺移動開發已經獲得了最流行軟體開發趨勢之一的聲譽。這並不令人意外,因為採用跨平臺開發技術使得軟體工程師使用同一代碼就能為不同平臺構建應用程式,從而節省時間、金錢以及不必要的工作。

移動市場的現狀

截至2019年12月,全球活躍網民已超45億。他們每人平均上網時間為6小時42分鐘,相當於每年上網超過100天。
再加上人們越來越渴望從掌上設備中獲取海量的信息,也就為之所以移動應用程式會如此受到歡迎提供了合理的解釋。截至 2019 年,全球移動應用收入達 4610 億美元,預計到 2023 年,付費下載和應用內廣告的收入預計將超過 9350 億美元。

 

移動開發的技術選型

十年前,老闆們必須決定他們的產品將涵蓋哪些移動操作系統:Android、iOS、微軟、RIM或Symbian。而今天,初創公司的創始人正面臨著一個不同的兩難抉擇,由於Android和iOS占據了移動操作系統市場份額的98%,很顯然這兩個系統不容忽視,覆蓋什麼平臺不再是問題。但問題是,構建一個在兩個平臺上都可以使用的應用程式應該採用什麼方法?

每個操作系統對應一種開發環境

顧名思義,用於開發Android用的是Java或Kotlin,用於開發iOS則是Objective-C或SWIFT。作為開發不同應用而使用不同的開發語言,對開發者而言並不是一個好消息。
雖然特定的開發環境對特定的操作系統擁有對資源更高效的調配效率,可防止發生性能問題。但缺點也很顯而易見,你的開發人員需要使用不同的開發語言構建兩個獨立的應用程式,這需要付出更多的時間、金錢和精力。

漸進式Web應用程式(PWA)

其中一個能解決問題的例子是漸進式 Web 應用(PWA),它基本上是模仿原生應用程式行為的一個網站(例如,在發送推送通知、離線工作,或者只是添加到移動設備的主屏幕上)。然而,就像任何其他選項一樣,PWA也不是完美無缺的,因為它們消耗更多的電池,並且不能授予應用使用設備的所有功能。

跨平臺應用程式開發

但還好我們還有一個跨平臺開發的選項,它允許用一段代碼同時為兩個操作系統開發應用。它並不固定使用某一種平臺的編程語言編寫代碼。而且,由於直接使用了系統原生控制項來呈現界面,它能為用戶提供近乎原生平臺應用的使用體驗。

 

我要不要使用跨平臺開發這項技術?

下麵,我會通過一系列維度來幫助你去評估你是否應該採用跨平臺開發這種形式來適配你的業務。

平臺

首先,也是最重要的,您需要決定您的應用程式是需要在一個還是多個操作系統上可用。如果您的目標群是由不同平臺的用戶組成的,那麼跨平臺開發將是首選的解決方案。

另一方面,如果你的用戶群體只是Android或iOS的某一支,那麼用原生解決方案來開發是你的首選。

複雜性

此標準涉及你希望與產品走多遠。解決此問題的一種方法是你的目標是使用MVP測試你的願景,或是你準備使用成熟的應用程式開始運行。您需要回答的另一個問題是產品的功能(例如,訪問移動設備的硬體或特定於平臺的功能)。

原生體驗

你的用戶是否需要使用原生或近似原生的體驗。使用Material Design(Android)或Human Interface Guidance(iOS)來設計的移動應用程式是移動產品對用戶直觀且友好的原因所在。在設計移動應用程式時應要考慮這些,但是,你可以使用跨平臺框架來實現類似的效果。

時間和成本

有一點是肯定的,原生開發成本不低、效率也不高。為不同的平臺構建不同的應用程式需要雇佣更多的開發人員,這可能會導致初創公司在項目初期就超出緊張的項目預算。同時,如果採用跨平臺的方法,你可以將項目外包給一個規模較小但同樣專業的團隊,這既是一個省時的解決方案,也是一個具有成本效益的解決方案。

 

跨平臺移動應用開發的優點(和缺點)

假設你已經得出結論,你更傾向於跨平臺的移動應用程式開發,但是在下決心之前,你需要對此解決方案的優缺點進行徹底的瞭解,沒關係,下麵我逐一為你列舉。

跨平臺移動應用程式開發的好處

更廣泛的市場覆蓋範圍

雖然我們每個人都有自己喜歡的移動操作系統,但個人喜好不會妨礙你業務的成功。讓Android和iOS用戶同時可以使用您的移動應用,能在未來提升更高的收錄打下基礎。

一套代碼

跨平臺開發允許您同時編寫包含多個操作系統的代碼(有時也會有處理平臺差異)。儘管如此,一套代碼肯定會影響軟體開發過程中的所有階段,因為它可能為你節省通常花在修複和升級兩組獨立代碼上的成本。

更高效的發佈流程

儘管只需要一套代碼,但跨平臺應用程式開發仍然需要開發人員考慮處理系統差異的方法,例如發佈應用到平臺商店的過程。

這種方法將縮短從設計到發佈的時間。換句話講,這可以為你節省很大一筆初始項目預算。

平臺一致性

毫無疑問,Android和iOS在用戶體驗和用戶界面方面都有很大的不同,這些差異中的大多數部分都能通過跨平臺開發框架幫你預設處理,這使得設計和實際表現不一致的情況發生的可能性進一步降低。

有什麼缺點?

儘管有上述各種優點,但它也絕不是一點缺點沒有,它的主要缺點包括性能可能較低及略差的用戶體驗和用戶界面等。

 

2020年還有哪些跨平臺移動開發框架值得考慮

雖然跨平臺的移動APP開發有利有弊。但從業務初創的角度來看,優點應該是大於缺點的。而且,隨著對跨平臺移動應用需求的不斷增長,現在可用的工具和框架數量也已經很可觀了。

但選擇過多會令人頭疼,這就是為什麼我們只關註最突出的跨平臺移動開發框架的原因:React Native, Flutter, NativeScript, 和Xamarin。

為了讓你更深入地瞭解是什麼使這些工具成為2020年軟體開發的可選選項,我們將根據以下標準對它們進行打分:社區支持、基於的編程語言、代碼可重用性、性能、界面以及使用它們構建的重要應用程式。

React Native

Reaction Native是Facebook於2015年發佈的開源、跨平臺的應用開發框架。作為2013年舉辦的一場內部黑客馬拉松的產物,它已經成為最受歡迎的原生App開發替代方案之一,擁有2043名GitHub貢獻者,獲得了超過82900 GitHub標星。不斷增長的社區認知度使得找到一支可靠且經驗豐富的開發團隊來承接你的項目變得相對容易。

Learn Once and Write Anywhere

基於React.JS,React Native利用JavaScript(根據2019年Stack Overflow的調查,JavaScript成為了最受歡迎的編程語言),為Android和iOS用戶提供真正原生的應用外觀和體驗。另外,使該框架脫穎而出的是,如果你需要,React Native允許你使用Java、Objective-C或SWIFT編寫部分原生模塊來順利處理複雜的操作,如視頻播放或圖像編輯。

雖然這些組件不能在不同的平臺之間共用,並且需要開發人員做更多的工作,但多達90%的React Native代碼是可以重用的。很好地表明該框架的座右銘不是“Write Once, Use Anywhere”,而是“learn once, write anywhere”。

就GUI而言,React Native可以提供接近原生的用戶體驗,這要歸功於它使用了Android和iOS的本地控制器。它還使用帶有UI元素的ReactJS庫,這有助於加快UI設計過程。在開發移動應用程式時,使此框架值得考慮的另一個原因是,它可用在不丟失應用程式狀態的情況下對UI進行更改。

另一個使React Native成為2020年跨平臺移動開發框架的首選之一,是因為持續的更新,例如近期的版本 0.60 和 0.61 :

  • 多項輔助功能改進。
  • 更清晰、更人性化的開始屏幕。
  • 快速刷新,融合了實時和熱重新載入,從而顯著加快了開發進程。

如上的Release Note只是React Native適應不斷變化的需求其中一個很小的樣本。

 

Flutter

2020年值得考慮的第二個框架是Flutter。它在Google I/O 2017上宣佈,並於2018年發佈,對於跨平臺的世界來說,它現在仍然是一個“新人”。但儘管如此,它已經獲得了超過80500 GitHub星標和絕大多數工程師將其稱為2019年Stack Overflow調查中最受歡迎的三個框架之一,Flutter無疑是一股不可忽視的力量。

Dart是如何使Flutter變得獨一無二的

Flutter 背後的編程語言是 Dart,谷歌稱之為"客戶端優化",適合在任何平臺上"快速構建應用程式"。它於 2011 年推出,是一種響應式面向對象的語言,被開發者認為相對容易學習,其中原因有二:第一,語法上它借鑒了C/C++ 和 Java; 第二,在官方網站上,您可以找到內容廣泛且相當簡單的文檔。值得一提的是,Dart 附帶了大量Flutter 相容軟體包的軟體包,允許您使應用程式更加複雜。

Flutter的一個主要優勢是,它的性能比本文提到的任何其他跨平臺移動開發框架都要好。這歸功於Dart的編譯器和Flutter擁有自己的一套小部件。結果是它能更快、更直接地與平臺直接通信,而不需要JavaScript橋(例如,Reaction Native就是這種情況)。說到小部件:通過Flutter的“UI-as-a-code”方法,它們只用DART編寫,這就提高了代碼的可重用性。

效率與用戶體驗和界面密不可分。如前所述,Flutter不依賴於一組原生組件,而是利用可視化、結構化、平臺性和互動式小部件進行UI的設計,所有這些都由框架的圖形引擎呈現。更重要的是,Flutter留下了很大的定製空間,如果你想要設計一個很完美的UI,它是個很好的選擇。

說到Flutter的更新,最新的穩定版本是在12月12日發佈的,根據官方發佈說明,它合併了來自188個貢獻者的近2000個pull。例如,版本1.12.13中包括的改進:

  • 重大的API變動。
  • 新功能,例如SliverOpacity小部件和SliverAnimatedList。
  • 修複了崩潰和性能問題。
  • Beta版中的Web支持。

這不是一個完整的清單,因為Flutter的目標是讓每年發佈的四個版本中的每一個版本都能為框架的可用性提升一個臺階。

Flutter是一個年輕的跨平臺移動應用程式開發框架,所以它沒有像React Native受到眾多的大公司青睞也是不足為奇的。然而,這並不意味著它不好,截至2019年12月,它也為阿裡巴巴、谷歌廣告、Groupon等眾多公司和業務所採用。

 

NativeScript

如果你要開始開發你的產品,“React Native”和“Flutter”絕不是唯一的解決方案。在 2020 年初,適合您的企業的替代框架也可能是 NativeScript。

這個開源框架於2015年3月公開發佈,並迅速成為廣受歡迎的解決方案。例如,在發佈後的短短兩個月內,它就獲得了3000顆GitHub星標,併在Twitter上吸引了1500多名粉絲的關註。到今天為止,市場上已有超過700個插件可供選擇。

在使用NativeScript構建跨平臺應用程式時,開發人員首先用JavaScript及其超集TypeScript編寫代碼。然後,將代碼庫編譯成各自平臺原生的編程語言。

另外值得一提的是,使用 NativeScript 的開發人員也可以使用第三方庫(CocoaPods 和 Android SDK),而無需包裝。

與React Native類似,NativeScript允許訪問Android和iOS原生API,這對跨平臺應用程式有明顯的積極影響。然而,不同之處在於,前者需要構建橋接API,而後者(用Progress首席開發者倡導者TJ VanToll的話說是“將所有iOS和Android API註入JavaScript虛擬機”)。與Facebook框架的另一個相似之處在於代碼重用,在這兩種情況下都可以達到90%。

 

Xamarin

Xamarin開源框架創建於2011年,這使它成為了這個列表中最“古老“的框架,但直到五年前它被微軟收購時,它才獲得了發展勢頭。截至今天,它號稱擁有超過6萬名貢獻者的社區。

從技術上講,要用Xamarin構建跨平臺的移動應用,需要很好地掌握.NET和C#兩種技術,前者是使用多種語言(包括C#編程語言)、編輯器和庫的開發平臺。Xamarin用一組工具補充了上述平臺,這些工具有助於構建跨平臺應用程式,例如庫、編輯器擴展和XAML。第二種技術是C#,這是一種面向對象的編程語言,它被認為比JavaScript學習起來稍難。Xamarin利用這種編程語言編寫整個應用程式,從後端到原生API,再到業務邏輯。

Xamarin.Native和Xamarin.Forms

Xamarin與其他框架的不同之處在於,它提供了兩種編譯跨平臺移動應用的方式:Xamarin Native(也稱為Xamarin.Android/iOS)和Xamarin.Forms。前一種方法優先考慮共用業務邏輯,並通過使用本機介面控制項實現近乎本機的性能。

後者側重於共用代碼,而不是業務原理,這一方面會導致代碼重用比例增加(使用Xamarin,開發人員可以重用高達96%的C#代碼),但另一方面這樣會降低代碼性能。

您可能已經註意到,跨平臺移動應用程式的性能和GUI密切相關,所以如果我說Xamarin構建應用程式的兩種方法對界面的最終外觀有很大影響,我可能不會感到驚訝。

Xamarin.Android/iOS允許開發人員使用原生控制項和佈局,而Xamarin.Forms基於標準UI元素,允許從單個API設計應用程式,但如果你需要更完美的原生UI,則可能還不夠。

 

2020年跨平臺應用程式開發還值得考慮嗎?

不論如何,跨平臺確實是一個值得考慮和極具前景的方向,特別是我們上面提到的 “React Native”和“Flutter”。

前者是一個成熟而穩定的框架,利用了最流行的編程語言之一,並擁有成熟的大型開發人員社區。後者是一個快速發展的技術,儘管它比React Native年輕的多,它也已經贏得了世界各地許多開發人員的青睞。

但無論您選擇的是“React Native”、“Flutter”還是任何其他框架,跨平臺方法都一定會為您節省時間和金錢,同時能為你最大限度地擴大市場覆蓋範圍。

最後,值不值得考慮,最終還是取決於你的業務目標、預算和時限。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考資料:C語言中文網 存儲引擎: 資料庫存儲引擎是資料庫底層軟體組件,資料庫管理系統使用數據引擎進行創建、查詢、更新和刪除數據操作。 不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎還可以獲得特定的功能。 註:InnoDB 事務型資料庫的首選引擎,支持事務安全表(AC ...
  • 大體來說,MySQL 可以分為 Server 層和存儲引擎層兩部分。 select * from T where ID=10; 這條查詢語句的執行過程: 外部層: 用戶與server層交互的媒介 一.客戶端【用於連接資料庫,輸入命令/語句】 界面化連接資料庫 輸入 select * from T w ...
  • 什麼是事務 事務的概念 從業務層面上來說,事務就是一個最小的不可分割的單元,通常一個事務對應的是一個完整的業務(比如銀行的轉賬操作)。 為什麼要有事務 仍以銀行轉賬為例加以說明,比如我要從賬號A轉賬100元到賬號B,現在資料庫有一張表account,那麼就意味著需要同時執行兩條SQL語句的更新: 以 ...
  • 導讀 現代大部分的登錄系統都支持郵箱、手機號碼登錄兩種方式,那麼如何在郵箱或者手機號碼這個字元串上建立索引才能保證性能最佳呢? 今天這篇文章就來探討一下在Mysql中如何給一個字元串加索引才能達到性能最佳。 本文首發於作者的微信公眾號【碼猿技術專欄】,原創不易,喜歡的朋友支持一下,謝謝!!! 陳某將 ...
  • 2020/4/2 Mongodb使用的是類似與json字元串的形式存儲數據 [ { key:value }, { key:value }, ] Mongodb使用了不存在的對象,即創建該對象 use db 使用db資料庫 show dbs 查看當前伺服器中寫在磁碟上的資料庫 show tables ...
  • [20200401]優化的困惑5.txt--//春節前對一個生產系統做優化,完成後使用ash_wait_chains.sql檢查,發現control file parallel write有點多。--//當時並沒有在意,總感覺哪裡不對,感覺這套系統磁碟IO有問題,現在有空分析看看。1.環境:> @ ...
  • 動畫運行的原理 任何程式的動畫原理都是一樣的,即:視覺暫留,視覺暫留又叫視覺暫停,人眼在觀察景物時,光信號傳入大腦神經,需經過一段短暫的時間,光的作用結束後,視覺形象並不立即消失,這種殘留的視覺稱“後像”,視覺的這一現象則被稱為“視覺暫留”。 電影就是依靠視覺暫留,在感官上電影是連續的。使動畫有流暢 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...