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.文档少 学习起来困难
相关文章
相关标签/搜索