原生開發纔是王道

以前不少朋友問我這麼一個問題,說剛作 Android 開發不久,可是市面上被 H5,React Native 等這些移動趨勢衝擊的不得不考慮要不要轉頭學習 H5 或者 RN ,跟上時代之後纔能有更好的發展,今天我就寫篇文章給你們詳細解惑下,而且說下個人見解。javascript

Native App

Native 開發也即原生開發,若是你是作 Android 開發,那麼大部分都是用 Java 語言來編寫的,若是你是作 iOS 開發,則是使用 Objecttive C 或者 Swift 來進行編寫的,這些都是官方的標準,好處顯而易見,利用官方提供的 api ,開發的 app 有更好的性能,能夠實現各類酷炫的效果,有更好的兼容性,對用戶來講體驗更好。前端

可是有沒有壞處呢?有,好比你要開發一個 app ,必定是要 Android 端開發一個,iOS 端開發一個,從開發成原本說有點大,並且咱們知道一旦程序出現 bug ,咱們通常就只有從新發佈一個版原本進行更新,對於 Android 端還好,對於須要漫長審覈的 iOS 來講簡直是噩夢。因此爲了解決這個問題,涌現了各類熱修復框架,可是畢竟都不是官方的,並且不免會有學習門檻,並且不可避免的是這類爲修復 bug 而生的熱修復框架自己也有 bug 風險。vue

H5 App

H5 全稱是 HTML5 ,是 HTML 最新的標準,咱們一開始常常看到的微信朋友圈廣告,一些推廣連接等大都是 H5 實現的,因此 H5 最近比較火,不過所謂 H5 實現通常都包含有 javascript ,這都是 web 前端工程師的基本技能,這也導致 web 前端工程師職位較火。java

不過若是開發一個 H5 應用的話,那很簡單,你只須要在外面包裹一個殼就行了。拿 Android 來講,最簡單的直接包個 WebView 處理下就能夠算是一個簡單的 H5 應用了,其餘的交給 web 前端工程師就行了。react

H5 應用的好處也是顯而易見,跨平臺,由於只須要在 Android 和 iOS 直接寫個殼就行了,大大減少了開發成本,並且 web 是實時渲染的,即便有 bug ,能夠直接發佈就行了,也解決了熱修復的問題。git

可是缺點很大:首先就是性能體驗太差,跟原生 App 的體驗簡直不能比,iOS 相對好些,Android 上的體驗簡直使人髮指,並且 Android 自己版本的碎片化嚴重,再加上國內各大手機廠商所謂的「定製」,體驗根本不能看,並且會遇到各類兼容性問題,遠的不說,我在開發 Android 的過程當中,就遇到很多適配的坑,有些你甚至都無法解決,只能眼看着。github

React Native

原生 App 體驗最好,可是不能跨平臺,H5 應用能夠跨平臺,可是體驗太差。有沒有一種介於二者之間的解決方案呢? React Native 橫空出世。web

React Native 是 Facebook 工程師開源的一個框架,項目開源地址在這裏:react-native

github.com/facebook/re…api

它的設計基於 React.js ,經過編寫 javascript 代碼,中間作了一層解釋器,把相關的 js 解釋成原生組件,最終達到跟原生 App 差很少的體驗。注意,React Native 最終運行的不是 web ,這點咱們團隊的小夥伴一開始也搞錯了,它最終運行在機器上的是原生的組件。

這解決方案是否是很完美?利用 js 的跨平臺特性,能夠達到原生的性能與體驗,聽起來就帥爆了,加上又是 FB 巨頭提出來的方案,因此該項目一經開源,在移動圈就引發了熱烈反響。

可是現在一兩年的時間過去了,看看市面上有多少 App 是徹底使用 React Native 來進行開發的,我想緣由有下:

  • 雖然說性能與體驗比純 web 好多了,可是不論是 js 的執行仍是多一層 js 到原生組件的解析渲染,因此性能上確定是不如原生

  • React Native 是一種解決方案,可是該方案還不成熟,據我所知還有很多坑,去該 GitHub 項目主頁看下有多少 issue 就知道了,並且國內環境更復雜,大家懂得。

  • React Native 有很多限制,雖然說它是一層 js 到原生組件的映射,可是並非全部的組件,全部的組件的 api 都支持的,若是你親身之間,你會發現,不少產品經理的需求很難實現,此次真不是產品經理的需求太複雜,而是 RN 的限制確實很多。

因此,RN 是一種解決方案,是一種技術趨勢,可是徹底不成熟,不建議在商業項目採用,但咱們能夠關注下,能夠在業餘時間學習實踐下。

順便多說句,阿里不是前段時間也開源了一個框架 Weex 麼,能夠說從新發明了相似 RN 的輪子,只不過它是基於 vue.js ,前幾天宣佈 vue.js 的做者以技術顧問的形式加入該項目組,可是我依然不看好該項目,一方面該項目會遇到 RN 上面的一些問題,另外一方面阿里的項目大可能是爲本身的業務服務的,因此 Weex 應該有很多是跟本身的業務綁定緊密的,不必定適合大部分中小公司,我沒有親自實踐過,不過以上就是我我的的一些見解。

總結

因此綜上,我以爲咱們時刻保持對技術的敏感性挺好的,可是不要過於杞人憂天,並且國內不少媒體言過其實,稍有點風吹草動,就會被吹的上天了,因此咱們要有本身的判斷與實踐。我一直認爲原生開發纔是王道,不管到何時,除非你不作 App 開發,或者說之後 App 死了,微信崛起了,不過起碼目前還看不到苗頭,也別相信什麼 App 已死的鬼話,那麼何時 App 開始沒落呢?我也不知道,給你們一個我本身認爲的指標作參考吧,何時 QQ、微信、支付寶等推出新的使用方式的時候,可能表明 App 已死,仔細想一想,咱們從 PC 時代過渡到手機 App 時代,是否是基本上從手Q、支付寶推出移動應用開始的,只不過 App 時代造就了微信,這些巨頭的敏感性總歸要比我的要強吧。

對了,前段時間微信朋友圈推出了原生廣告,微信第一次把廣告體驗提高到了一個新高度,我想某種意義上是否是說明了什麼?

因此,建議你們不用再過分擔心了,能夠時刻保持着對新技術的敏感性,只要你目前還在作移動應用開發,現階段你依然須要提高你本身原生開發的能力,把重心放在原生開發上!

推薦關注個人微信公衆號 AndroidDeveloper「googdev」,第一時間獲取博客更新!

相關文章
相關標籤/搜索