當前位置:
首頁 > 最新 > 這麼多移動開發的方式,傳統方式寫安卓、IOS 還有出路嗎?

這麼多移動開發的方式,傳統方式寫安卓、IOS 還有出路嗎?

前言

我所說的傳統的方式是指,用 Java 或者 Kotlin 寫安卓,用 Object-C 或者 Swift 寫 IOS。

回想我 2014 年上大學的時候,老師跟我們說最近兩年移動端特別的火,出去特別好找工作,萬萬沒想到,到了 2016 年,我所在的實驗室的學長去找安卓的工作就已經很難了。

現在都 2018 年了,作為一個本科生找安卓或者 IOS 就更難了,雖然移動市場不會消失,但是用戶或者開發者來說,原生移動應用都有天生的痛點。

對於用戶來說,原生應用在使用之前需要花大量的流量去下載,而且還暫用大量的快閃記憶體空間。據統計,用戶在手機上最常用的的也就三個 App,那麼就導致大量的 App 在手機上決大部分的時間都是閑置的。

對於開發者(不是開發應用的人,而是需要開發應用的人)來說,做一個移動端的應用,需要開發兩套應用,這對於需要開發應用的人來說,就很花費人力、財力。

為了解決原生移動應用的一些天生痛點,很多公司開發了各種技術、框架。

介紹的技術列表

RN(2015年4月)

Flutter(2018年2月)

PWA(2016年6月)

小程序(2017年1月)

快應用(2018年3月)

技術介紹

React Native(簡稱 RN)和 Flutter

React Native 是 Facebook 發布的,可以讓我們廣大開發者使用 JavaScript 和 React 開發我們的應用,該提倡組件化開發,也就是說 React Native 給我們提供一個個封裝好的組件讓開發者來進行使用,甚至我們可以相關嵌套形成新的組件。

使用 React Native 我們可以維護多種平台(Web,Android 和 IOS)的同一份業務邏輯核心代碼來創建原生應用。

Flutter 是 Google 使用 Dart 語言開發的移動應用開發框架,使用一套 Dart 代碼就能構建高性能、高保真的 iOS 和 Android 應用程序,並且在排版、圖標、滾動、點擊等方面實現零差異。

React Native 和 Flutter 對比


React Native是非常受歡迎的(這是它應得的),但是因為 JavaScript 訪問了原生 UI 組件,所以它也必須經過這些「橋接器」,界面上的UI控制項通常被頻繁地訪問(在動畫、轉化或者用戶用手指「滑動」屏幕上的某些東西時,每秒被訪問高達60次),因此這很可能會導致性能問題。

JS代碼和原生代碼本身都是很快的,瓶頸經常發生在當我們視圖從一邊轉向另一邊時。未來構建高質量的應用程序時,我們必須將使用橋接的次數控制到最小。

Flutter 框架原理

和 React Native 一樣,Flutter 也提供響應式的視圖,Flutter 採用不同的方法避免由JavaScript 橋接器引起的性能問題,即用名為 Dart 的程序語言來編譯。Dart 是用預編譯的方式編譯多個平台的原生代碼,這允許 Flutter 直接與平台通信,而不需要通過執行上下文切換的 JavaScript 橋接器。編譯為原生代碼也可以加快應用程序的啟動時間。

PWA

PWA 全稱是: Progressive Web Apps,漸進式 Web 應用。這是 2016 年,Google I/O 大會上提出一個 Next Web Generation 的概念。這並不是描述一個技術,而是一些技術的合集。PWA 是專門應對手機 Web 開發而提出的,通過新技術的成熟,實現最好的 Web + 手機 APP。也就是說,能讓你在使用 Web 的時候感覺像是在使用 APP。

能夠顯著提高應用載入速度、甚至讓 web 應用可以在離線環境使用的 Service Worker 與 Cache Storage;用於描述 web 應用元數據(metadata)、讓 web 應用能夠像原生應用一樣被添加到主屏、全屏執行的 Web App Manifest;以及進一步提高 web 應用與操作系統集成能力,讓 web 應用能在未被激活時發起推送通知的 Push API 與 Notification API 等等。

消息推送。用戶只要允許,即使網頁關閉後仍然可以在系統通知欄收到推送消息。

後台載入。往常的網頁應用只要關閉了網頁他的生命就結束了,現在引入了一個 Service Worker 的概念,即使網頁關閉,PWA 仍然可以在後台運行獲取數據更新(當然有限制)。

離線使用。PWA 打開後會緩存一些內容,之後再次訪問即使沒有網路也可以瀏覽之前的頁面(如同IE時代的離線瀏覽)。

原生應用界面。在某些情況下 PWA 應用可以隱藏瀏覽器本身的所有視覺成分,光從UI和UX上看,很容易認為這就是一個原生界面,如下圖其實都是PWA而不是原生應用。

桌面圖標。PWA只要配上一個圖標,再放快捷方式在桌面上(比如一定時間內第二次訪問PWA會自動詢問是否添加快捷方式到桌面),就真的和原生系統無異了,打開的速度也很快(當然功能不能很龐大)。

另一方面,和原生應用比,PWA 又不需要用戶安裝,只需要瀏覽器支持 PWA 就可以了。

小程序

這裡單指微信小程序,其他平台小程序差不多

小程序是什麼我就不做科普了,相信大家都知道,不知道的看下圖就懂了。

什麼是小程序

在產品層面上,微信小程序解決了兩個問題:

讓用戶用完即走,沒有任何負擔,同時擁有接近原生體驗

提高低頻應用的用戶觸達率

快應用

對於快應用我可能還時屬於第一批的開發者,在去年暑假,也就是 2017 年 8 月份開始,我在小米就開始做基於小米推出的直達服務,做的是關於多看閱讀的一個分享頁面,基本上跟現在聯合推出的快應用沒什麼差別,只是名詞換了而已。

「快應用」 是九大手機廠商基於硬體平台共同推出的新型應用生態,用戶無需下載安裝,即點即用,享受原生應用的性能體驗。「快應用」 使用前端技術棧開發(語法跟 vue 的語法類似),原生渲染,所以很多 css 屬性是不能用的,同時具備 H5 頁面和原生應用的雙重優點。「快應用」 框架深度集成進各廠商手機系統中,可以在操作系統層面實現用戶需求與應用服務間的無縫連接,提升用戶的使用體驗和應用服務的轉化效率,同時支持生成桌面圖標等留存能力。

「快應用」 具有 「免安裝、免存儲、一鍵直達、更新直接推送」 四大體驗優勢,「快應用」 將使用戶通過手機更容易獲取到自己所需的服務。舉個例子,在 App 的情況下,你首先需要知道有餓了么、美團等外賣 App 可以尋找美食,然後需要到應用市場中下載安裝這些 App,然後打開這些 App,搜索 「比薩」。而有了 「快應用」,你拿到新的手機後,不需要知道哪個 App 可以幫你尋找美食,也不需要去下載那個 App,你只需要下拉桌面打開全局搜索,輸入 「比薩」,即可輕鬆獲取相應的服務。

結束語

介紹了這麼多技術,根據這些發展的技術,希望讀者能看到一些趨勢,對行業的洞察力。

像 RN 和 Flutter ,他們是解決跨平台的問題,寫一套代碼,安卓、IOS 都能用,而且是原生的。

而像 PWA 、微信小程序,他們是用 web 的方式來達到跨平台的方式。

而像快應用,他是用來解決小程序是 web 方式渲染的劣勢,同時及時不用微信,也可以用完就走,但是微信基本上每個手機都會裝,所以這點沒有太大的優勢。

總之,跨平台已經是一種趨勢,一勞多用正在被行業正在奮鬥的目標。但是原生的安卓和 IOS 肯定是丟不掉的,因為底層的還得原生代碼去調用。

沒有任何一種方式是萬能的,我們在選擇技術方案的時候需要根據技術的特點,適合場景去做選擇,沒有最好,只有最適合。

最後,對我們前端工程師做一下鼓勵,這裡面 RN、PWA、小程序、快應用,我們前端上手都比較快,前端這門職業目前還是比較有前途的。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

不玩遊戲卻指點江山?「雲玩家」到底惹惱了誰
Metagaming的介紹及其他

TAG:全球大搜羅 |