Cordova 和 React-Native對比

Cordova 和 React-Native 是使用 Web 開發移動端的兩大框架。 Cordova 是 Apache 旗下的。 React-Native 是 Facebook 旗下的在2013年發佈的一個前端框架。二者皆開源。 下面的內容主要記錄了這兩大框架的優劣。以及移動端開發中有關 WebView 比較可行的幾種選擇。 Cordova文檔 , React-Native文檔 。css

對比 
跨平臺特性html

  • Cordova: write once, run anywhere ( 一次開發,隨處運行)
  • React-Native: Learn once, write anywhere ( 一次學習,隨處開發)

功能支持前端

  • Cordova: 基本功能徹底具有,對於底層,如攝像頭之類的,須要插件。
  • React-Native: 徹底支持。 Android 端不是很完善。

風險程度react

  • Native 比 cordova 高。

開發成本android

  • Cordova: 徹底基於 html,css,js 。寫一次代碼,兩個平臺都適用。
  • React-Native: 具備相同語法體系,但須要根據不一樣平臺編寫不一樣代碼。

運行速度ios

  • Cordova: 相對較慢
  • React-Native: 跟 Native 基本至關

WebView問題 
由於 Android WebView 和 IOS 的 UIWebView 內存泄露的問題。因此在選擇內核的時候,使用原生的 WebView 內存泄露很明顯。而且不易解決。 IOS8+ 以前,一樣有大量內存泄露。分別看一下Android和IOS系統比例圖:web

  • Android 
    這裏寫圖片描述
  • IOS 
    這裏寫圖片描述

若是要考慮 Android4.4 如下的設備和 IOS8+ 設備。由於先後的運行內核不一。性能不一。以及國內廠商對於系統的深度定製,不一樣的渲染。 app 最好有專門的內核。保證擁有一致性的體驗。有以下幾個選擇:react-native

使用 Crosswalk 開源 web 引擎。 
優點api

  1. 更豐富的 HTML5 特性支持。包括 WebGL,WebAudio,WebRTC,Gamepad,WebSocket 等等。
  2. 使用 Crosswalk 能夠保持平臺的一致性。 劣勢安全

  3. 打包後的 app 體積增長 20M-30M 。

  4. Crosswalk lite 針對上面第一條, CrossWalk 提出了 Shared 
    Mode 和 Crosswalk lite 解決方案。體積能夠減小到只增長10M左右。

使用騰訊 TBS 瀏覽服務 
優點

  1. 速度快:相比系統 webView 的網頁加載速度有近30%的提高。
  2. 大小隻有 253K。
  3. 省流量:雲端優化技術使流量節省20%。
  4. 更安全:24小時安全問題解決機制。
  5. 更穩定:通過億級用戶的使用考驗,CRASH率0.15%。
  6. 集成強大的視頻播放器,支持各類視頻格式直接打開。
  7. 適屏排版、字體設置等瀏覽加強功能的提供。
  8. Html5更完整支持。
  9. 無系統內核的碎片化問題,更少的兼容性問題劣勢。
  10. X5SDK是經過調用微信/手機QQ/空間的X5內核。若是手機沒有安裝騰訊相關軟件。這個就不能使用。

劣勢

  1. 手機中必須安裝有騰訊的服務。

優劣對比

cordova  ionic :

優點:
    ios 和 android 基本上能夠共用代碼,純web思惟,開發速度快,簡單方便,一次編碼,處處運行,若是熟悉web開發,則開發難度較低。
    文檔很全,系統級支持封裝較好,全部UI組件都是有html模擬,能夠統一使用。

    可實如今線更新 容許加載動態加載web js

    文檔多,開發者多,視頻教程多 容易學習    遇到問題容易解決  技術成熟



劣勢:

   佔用內存高一些(不過手機內存都大了不影響),不適合作遊戲類型app,   web技術沒法解決一切問題,對於比較耗性能的地方沒法利用native的思惟實現優點互補,如高體驗的交互,動畫等。


react-native :

優點:

一、雖然不能作到一處編碼處處運行,可是基本上即便是兩套代碼,也是相同的jsx語法,使用js進行開發。用戶體驗,高於html,開發效率較高 二、flexbox 佈局 聽說比native的自適應佈局更加簡單高效
    可實如今線更新 2015.7.28 AppStore審覈政策調整:容許運行於JavascriptCore的動態加載代碼
    更貼近原生開發

劣勢:

一、(引)對開發人員要求較高,不是懂點web技術就行的,當官方封裝的控件、api沒法知足需求時 就必然須要懂一些native的東西去擴展,擴展性仍然遠遠不如web,也遠遠不如直接寫Native code。
二、(引)官方說得很隱晦:learn once, write anywhere。人家可沒說run anywhere。事實上,從官方的api來看SliderIOS,SwitchIOS..等等這些控件,以後勢必會出現SliderAndroid,SwitchAndroid...,也就是極可能針對不一樣的平臺會須要寫多套代碼。
 三、發展還不成熟,目前不少ui組件只有ios的實現,android的須要本身實現。
        (引)從Native到Web,要作不少概念轉換,勢必形成雙方都要妥協。好比web要用一套CSS的閹割版,Native經過css-layout拿到最終樣式再轉換成native原生的表達方式(好比iOS的Constraint\origin\Center等屬性),再好比動畫。另外,若Android和iOS都要作相同的封裝,概念轉換就更復雜 五、文檔還不夠完整 學習曲線偏高 4.文檔少 學習起來困難
相關文章
相關標籤/搜索