Cordova 和 React-Native 是使用 Web 開發移動端的兩大框架。 Cordova 是 Apache 旗下的。 React-Native 是 Facebook 旗下的在2013年發佈的一個前端框架。二者皆開源。 下面的內容主要記錄了這兩大框架的優劣。以及移動端開發中有關 WebView 比較可行的幾種選擇。 Cordova文檔 , React-Native文檔 。css
對比
跨平臺特性html
功能支持前端
風險程度react
開發成本android
運行速度ios
WebView問題
由於 Android WebView 和 IOS 的 UIWebView 內存泄露的問題。因此在選擇內核的時候,使用原生的 WebView 內存泄露很明顯。而且不易解決。 IOS8+ 以前,一樣有大量內存泄露。分別看一下Android和IOS系統比例圖:web
若是要考慮 Android4.4 如下的設備和 IOS8+ 設備。由於先後的運行內核不一。性能不一。以及國內廠商對於系統的深度定製,不一樣的渲染。 app 最好有專門的內核。保證擁有一致性的體驗。有以下幾個選擇:react-native
使用 Crosswalk 開源 web 引擎。
優點api
使用 Crosswalk 能夠保持平臺的一致性。 劣勢安全
打包後的 app 體積增長 20M-30M 。
使用騰訊 TBS 瀏覽服務
優點
劣勢
優劣對比
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.文檔少 學習起來困難