Hybrid App 和 React Native 開發那點事

簡介:Hybrid App(混合模式移動應用)開發是指介於Web-app、Native-App這二者之間的一種開發模式,兼具「Native App 良好用戶交互體驗的優點」和「Web App 跨平臺開發的優點」。不少人都知道,React Native 是 Facebook 開源的框架,能夠直接用 Javascript 開發原生的APP,本文則會圍繞開發中的具體實踐問題進行討論。php

此前,咱們在多篇文章中提到過 React Native,本次移動精英開發俱樂部又專門圍繞 Hybrid App 和 React Native 進行更加深刻的討論,但願可以給咱們的開發者同窗,提供一些建議。文章系朱雅麗整理, IT 運維管理平臺 OneAPM 負責審校。如下爲討論內容:html

主持人-東輝:你們好,今天咱們的主題是 Hybrid App 和 React Native,歡迎你們踊躍進行發言。前端

陳偉鵬-雅特iOS:我想知道用了 React Native 的同窗,對這種技術的態度和評價?react

郭鐙鴻:貌似攜程、平安科技還有天貓都在使用 React Native,說明仍是有市場的。git

主持人-東輝:React Native 在 Android 上的表現貌似不太好,坑比較多吧?angularjs

龍蝦:React Native 的首次加載很慢,有緩存就好一些,其餘的還能夠,落地的難度就是不知道該客戶端開發作,仍是前端作。es6

郭鐙鴻:React Native 有效解決了H5的性功能障礙問題,這點很不錯。就像 React Native 的理念:leaReact Native once, write anywhere .github

James:我的理解,React Native 的推出應該是爲了統一移動端的開發模式。typescript

羅飛:你們能夠分享一下本身公司用 Hybrid 或 React Native 的現狀,都是怎麼用的?編程

利炳根:現狀就是:大部分均可以用 React Native 作完,只有少部分須要原生支持。固然,也和咱們的項目有關。由於咱們如今作得功能都比較簡單,咱們主要工做都在處理一個問題:一個平臺上顯示好好的東西,一樣的代碼,在另外一個平臺上,就不行了。而後還有就是對不一樣的屏幕的適配,目前還沒遇到特別難的東西,今天看看有沒有人用來作大型成熟項目?學習一下經驗。

Rory He:React Native 須要技術的學習成本其實更高一些。

frankphper:前端是否是由於 React Native 才變成「錢」端?

Kiss小錦:前幾天看到阿里作了開源,效果參考淘寶、聚划算品牌團。https://github.com/alibaba/LuaViewSDK

其實,移動 APP 開發領域,要極致體驗發佈就不靈活(Native),要靈活發佈就沒有極致體驗(H5)。有沒有一種技術方案能夠兼顧極致的體驗和靈活的發佈? LuaView 能夠完美解決上述兩個問題,不過須要學習 lua 語言。

主持人-東輝:你們也能夠說實踐、使用場景以及收益等問題。

Kiss小錦:使用場景通常是電商作大促活動須要靈活上線。

利炳根http://reactnative.cn/docs/0.21/getting-started.html 你們能夠看看這裏的文檔,再買本入門書,通常的項目開發就差很少了。

杜鵬飛千鋒安卓:直接用 WebView 和普通網頁不更簡單麼?

郭鐙鴻:若是那樣的話,性能和功能都有問題。

Shawn:我認爲目前 Hybrid 開發形式有三種:

1.原生開發一部分+H5開發一部分,經過 WebView 橋接; 2. 純 H5 開發,須要本地功能時經過第三方打包工具實現 如 HBuilder+ ; 3. 用 H5 或 JS 開發,但最終編譯成 Native 應用,如 ReactNative、APICloud、Cocos2d-js、Unity3D-js 等。還有種形式是 Webview+Runtime ,通常用在H5遊戲加速,像騰訊 X5 瀏覽器、UC 等都內置了 Runtime;

jia_dongxu:能夠用 cordova+ionic angular。v2 優化很多移動端,angular 也要出2了,聽說優化移動,不知道 ionic2 和 angular2 正式版性能會不會提升不少?

真哥:不過,ionic 在安卓手機上性能很差。

郭鐙鴻:ionic 有點卡,iOS 相對好些。

Shawn:移動端性能是個問題,傳統的PC 端方案仍是不要用在手機上了。

柴明昆:貌似Angular 2.0對Native Apps 的支持和渲染是基於 React Native 的,咱們也是某個模塊改動需求頻繁,最近正在研究評估使用 React-Native。

James:ionic2 nightly 已經有了,ionic2 徹底採用angularjs2 ,用的 typescript es6,在性能會很大改善 。angularjs2 對移動端也進行了優化,React Native 目前應該都是大廠或者小範圍在使用。

真哥:對dom的操做太頻繁,特別是雙向數據綁定,不太現實。若是你須要快速迭代,能夠考慮React Native,若是特別注重體驗和性能,建議用原生。

利炳根:前段時間,有外包公司專門推 React Native,號稱基本的東西都已經封裝了一遍,若是真的能作到他們宣稱的那個程度,開發通常的 APP 超級快。不少通常的 APP,核心的競爭力是業務上的,對 APP 自己卻是不在意,怎麼快怎麼來。固然,你們未必樂意作這類開發。

以前有公司,作了一年快速迭代,找到了真的有用戶願意用的業務,纔開始優化的,一開始優化,優化完發現沒人用,就是個悲劇。

竇靜軒:關鍵是須要自定義,仍是須要 Native 開發,因此不會出現誰替代誰。想跑起來一個React Native 的項目沒那麼容易,還須要基本的 Node 知識 。

我麻不拿到溫網冠軍就不更名字:這樣會不會致使大部分公司願意用 React Native,從而減小開發成本?

利炳根:固然,這是公司的悲劇,開發人員卻是無所謂的,公司倒了能夠去下一家,反正本身技術練到了。咱們兩天前來的新同事,已經負責 React Native 的動畫開發了,總得來講,上手仍是很容易的。

Shawn:也就是說大公司追求用戶體驗,若是不計成本和開發效率的話,仍是會用原生來作。

真哥:React Native 也屬於一種開發模式了,其實優缺點很明顯,React Native 只能調用原生接口,可是不能對原生作擴展,要作擴展只能寫 Native,React Native 比 ionic1 好一點,不過如今學習 ionic2 或者 angular2 須要去看看 typescript。

jia_dongxu:React Native 的缺點,Android 體驗太差了,很是卡。

利炳根:卡的問題,須要把開發模式關了,會好很是多,而後,頁面仍是能夠適當優化一下的。

竇靜軒:若是說有一批人,把市面上流行的組件的都封裝了, 而且開源了,那樣推廣的速度也會很快。

我麻不拿到溫網冠軍就不更名字:就是說若是須要自定義控件的時候,React Native 作不到?

真哥:是的,React Native 不能作接口開發。

竇靜軒:React Native 提供自定義組件的方法,須要 Native 本身開發。

利炳根:把原生封一層給 React Native 用,安卓不是很瞭解,iOS 這塊是很是簡單的。固然也多是由於我作的功能比較簡單。

柴明昆:React Native 在使用 View 的時候,這些 View 是要通過本地定製的,而且將相關方法暴露給 JS ,這樣 JS 端才能正常使用。

張春明:React Native 是否採用?我通常這麼想:可否達到快速迭代,能夠適應產品的各類變態修改(控件修改),有問題容易追蹤定位,現階段更傾向於混合開發,而後各取所需。

Shawn:因此說目前尚未一套完美的方案,也就是說須要原生來作的,咱們就用原生好了,H5 優點的地方就用 H5,這才叫混合開發嘛!

郭鐙鴻:React Native 在性能和功能上是沒有問題的,主要學習曲線比較陡峭,會用的人少。

竇靜軒:Hybrid 受限於 WebView 啊,WebView 若是有 Bug 你沒轍啊。

龍志輝:天貓的部分業務不是已經用 React Native 改造了嗎?

郭鐙鴻:天貓對 React Native 進行了封裝。

柴明昆:若是沒記錯的話,QQ 空間的發現模塊,就是用的 React Native。

真哥:用什麼技術既不影響性能,又達到了功能和提升用戶體驗?

竇靜軒:我以爲用啥在於開發者決策,若是你爲了一個廣告活動頁,去弄 React Native 和Hybrid ,真心不如一個 WebView H5 原生去搞。我是15年趟了一年 Hybrid 的坑,16開始趟React Native 的坑了。

龍志輝:本地加毛玻璃吧!其實編程的思路是同樣的,React Native 或者 Hybrid 主要目的不少時候是爲了突破客戶端審覈限制和達到代碼複用的目的,避免一個相同的業務寫三份代碼(Android,iOS,Web)。

郭鐙鴻:我發現12306用的動態庫也繞開了蘋果的審覈。

真哥:其實我以爲 React Native 更像一種思想 ,並不僅是表明一個框架,學習框架主要是學習做者的思想, 就好比 angular 。

竇靜軒:對,是思想,組件式開發。

我麻不拿到溫網冠軍就不更名字:我以爲 React Native 作某些模塊還行,可是若是說徹底來代替原生,我以爲是否是太快誇張了?

真哥:其實都是 MVVM,替代不了,只是說可以在相對短的時間沒作出接近同等效果對性能影響又不大,「分久必合,合久必分」,如今徹底被推翻了,若是統一的話,也許就不會有這麼多新的想法了。

龍志輝-iOS:每一年 iOS 和 Android 系統更新都會開放一大票新的API,用第三方的始終會慢半拍,性能和用戶體驗在客戶端是放在首位的。

Shawn:你看 Cocos2d 支持 JS 吧,Unity3d 官方推薦用 JS 吧,雖然說目前 JS 面向對象不太完全,你看 ECMAScript6 也發不了,JS 用起來就更爽了,關鍵是 React Native 默認支持 ES6。

湯濤:我以爲 React Native 或者 Hybrid 方案,適用於強運營類的產品,好比電商類,工具類這種暫時不必,你們選擇技術方案時能夠參考。

龍志輝-iOS:不知道微信的應用號會使用什麼技術?React Native?

James:微信的應用號用 JS,並且微信有 WebView。

龍志輝-iOS:那仍是 Hybrid 啊,若是微信也把 JS 框架開源了,就是第二個 React Native 了。

Shawn:騰訊不會棄標準於不顧的,微信應用號絕對是 H5 崛起的時候。

龍志輝-iOS:其實我以爲 React Native 有點像 Cocos2d-x,把各個平臺的組件封裝一套,用C++一次編寫,就能夠移植到各個平臺了。

羅飛:很是感謝你們的討論,因爲時間的緣由,今天的討論到此爲止。後續咱們還能夠再進行更多的交流,再次感謝你們。

國內 ITOM 管理平臺 OneAPM 致力於幫助企業用戶提供全棧式的性能管理以及 IT 運維管理服務,經過一個探針就可以完成日誌分析、安全防禦、APM 基礎組件監控、集成報警以及大數據分析等功能。想閱讀更多優秀文章,請訪問 OneAPM 官方技術博客

本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索