综合这段时间对ReactNative(下称RN)和NativeScript(下称NS)的简单学习了解,分别从不同方面分析对比二者的优缺点。

页面结构

NS一个页面的目录结构:

RN的一个页面一般就是一个JS文件,样式、XML、JS全部写在一个文件里:

对比报告

ReactNative NativeScript 对比结果
与传统web开发的差异性(学习成本) 样式、布局、逻辑控制等所有代码都以JS的形式书写,使用ES6语法(虽然可以使用ES5,但是官方推荐ES6),对于没有接触过ES6的新手有一定学习成本,要求开发者最好对原生有一定了解。 与传统web开发方式非常接近,只不过把html换成了xml,样式的写法也是遵照web中css的方式,很多api也与web更接近,相比RN而言api更简单,新手更易于接受,整体而言学习成本比RN要低 NS 胜
CSS丰富程度 比较匮乏,只支持有限的几十种样式,相比web中几百种丰富高级的样式,RN在这一点显得特别不够用,就连最基本的控制元素显示与隐藏都要通过其他方式变相实现 也比较匮乏,也只支持几十种样式,NativeScript支持的CSS列表 二者都不够丰富
github star 数 react-native有39848个star(截止2016-11-03) NativeScript有8536个star(截止2016-11-03) RN胜
社区资源 比较丰富,网上N多相关学习介绍文章,有非常丰富的中文学习资源 学习资源较为匮乏,很少中文学习资料,一般只能从官网学习 RN胜
API文档丰富程度 个人觉得比较混论,doc和api混为一谈,没有专门的API文档 有专门的API文档 NS胜
是否支持按键监听 不支持,找遍全网也没找到相关方法,不过自己实现比较简单(已经实现) 也不支持,因为设计的初衷就是做移动APP的,暂时没有去尝试自己实现,所以不知道难易程度 二者都不支持
是否支持与原生混合开发 支持,可以随时打开AndroidStuido修改原生代码,甚至可以往一个现有的Android项目中添加RN的支持 所有涉及原生的功能都要以开发插件的形式增加,而且插件开发涉及原生和JS双边,暂不清楚插件开发的难易程度 RN胜
插件丰富程度 这一点与社区资源类似,由于关注的人多,所以插件也很丰富 插件相对而言没有RN丰富 RN胜
性能 HTML5 < RN < 原生,具体和原生差多少还未知,电视上测试时光标移动流畅 HTML5 < NS < 原生,具体与原生差多少也未知,由于不支持按键监听,暂未在电视上测试 由于二者的工作原理类似,都是采用JS引擎将XML翻译成原生的布局,所以估计二者性能差不多
热更新 支持,已测试成功,增量更新暂未尝试(理论上可行),热更新之后必须重启生效 支持,已测试成功,热更新之后CSS和XML可以立即生效,JS需重启生效 都支持
界面开发难易程度 对于习惯web开发的开发者而言,个人觉得比较大,想实现一个复杂点的界面需要折腾半天 和RN类似,布局开发对于前端开发者有一定的适应期 都不算容易
生成的APK体积 HelloWorld项目大约7M多 HelloWorld项目大约12M多 RN胜
最低支持Android版本 暂不清楚最低支持多少,已知支持Android4.1 最低Android4.2 RN胜
动画开发难易程度 比较麻烦,需要比较多的代码来实现 CSS即可实现动画,类似web中的@key-frames形式,对于前端开发者而言非常容易掌握 NS胜
远程调试 默认支持Chrome调试JS,但不能调试界面 暂不清楚 未知
虽然这么多人在关注,但是由于出来没多久,坑比较多,特别是Android平台相比IOS平台更多 坑也很多 都多
图片地址可否动态拼接 不可以,网络图片可以,本地非资源图片必须以类似require('../images/logo.png')的方式加载,且图片路径不能是变量和动态拼接,这一点非常坑爹 可以随意指定,可以随意拼接 NS胜
直接修改图片地址 不可以,只能通过state动态实现 可以,与web方式非常类似,直接通过var img = page.getViewById("logo")拿到图片对象,然后img.set('src', 'test.jpg')即可 NS胜

ReactNative与NativeScript对比报告的更多相关文章

  1. ReactNative&weex&DeviceOne对比

    React Native出来有一段时间了,国内的weex和deviceone是近期发布的,我可以说从2011年就开始关注快速开发的跨平台平台技术了,接触过phoneGap.数字天堂.appcan等早期 ...

  2. 【转】ReactNative&weex&DeviceOne对比

    React Native出来有一段时间了,国内的weex和deviceone是近期发布的,我可以说从2011年就开始关注快速开发的跨平台平台技术了,接触过phoneGap.数字天堂.appcan等早期 ...

  3. CoolHash数据库引擎压测对比报告

    Coolhash 当前性能指标:读写吞吐量超过百万,千万级别查询1秒完成,连续48小时打满CPU强压力运行稳定.redis官方公布读写性能在10万 tps,leveldb官方公布写性能在40万tps, ...

  4. 使用Jmeter聚合报告生成对比图表

    背景 最近在帮别的项目组执行性能测试,使用的工具是Jmeter.接口录制和参数化前一个人已经做好了,我主要的工作就是执行脚本,撰写测试报告.事情并不复杂,可做起来却极为耗时. 首先,由于有6组账号,分 ...

  5. Oracle 11g AWR和ADDM性能报告

    一.自动工作负载库(Automatic Workload Repository,AWR) 自动工作负载库(Automatic Workload Repository,AWR)是在Oracle公司提供的 ...

  6. Oracle 11g AWR 系列五:如何生成 AWR 报告?

    1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/adm ...

  7. Oracle 11g AWR生成报告

    1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/adm ...

  8. “都是为了生活”小组 选题 Scrum立会报告+燃尽图 01

    作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8683. 由于团队账号申请博客未通过网站审核,无法写博或加入班级,第一次立会 ...

  9. go gin框架和springboot框架WEB接口性能对比

    1 简要概述 最近看起go lang,真的被go的goroutine(协程)惊艳到了,一句 go function(){#todo},即可完成一个并发的工作. 看到gin这个web框架时,突然就特别想 ...

随机推荐

  1. 多个jar包合并成一个jar包的办法

    步骤: 1.将多个JAR包使用压缩软件打开,并将全包名的类拷贝到一个临时目录地下. 2.cmd命令到该临时目录下,此时会有很多.class文件,其中需要带完整包路径 3.执行 jar -cvfM te ...

  2. [转载] SSH入门学习基础教程

    在Linux系统中,OpenSSH是目前最流行的远程系统登录与文件传输应用,也是传统Telenet.FTP和R系列等网络应用的换代产品.其 中,ssh(Secure Shell)可以替代telnet. ...

  3. MOD

    题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2318 ///这是哈理工校 ...

  4. oracle EXP导出一张表时使用query参数指定where条件

    oracle exp 导出一个表的部分内容,使用query参数可加上SQL的where条件进行过滤 注意:如果需要使用到日期字符串格式等单引号,需要使用双引号将where条件括起来,而且双引号要用\做 ...

  5. js判断图片是否加载完成

    var img = new Image(); //新建一个图片对象:img.src = ...; //图片地址是你准备要加载的地址:if(img.complete){ //表示图片已经加载完成}

  6. CF-补题1

    CF-补题1 1.CodeForces 735C    题意:n个人淘汰赛,两个人可以比赛的条件是:两人打过的场数之差绝对值<2.求冠军最多可以打多少场.  总结:看了题解,转换一下思路.求n个 ...

  7. IDEA+Tomcat+JRebel热部署

    在完成idea工程简单应用后,接下来实现热部署. 简单应用地址:http://wibiline.iteye.com/admin/blogs/2072454 一.安装JRebel插件 1. 在线安装 F ...

  8. Sublime Text 3实用快捷键大全

      下面是我通过网上教程和文本资料学习sublime Text3时收集的一些实用功能和常用快捷键,现在分享出来,如果还有其它的好用的功能可以在下面留言,以便互相学习和交流,谢谢!. 选择类 Ctrl+ ...

  9. VMware创建Linux虚拟机并安装CentOS(三)

    选择“创建自定义布局”手动给Linux指定系统分区.交换分区,鼠标单击“下一步”按钮继续. 首先创建交Swap分区,鼠标单击“创建”按钮,在弹出的“生成存储”对话框中,生成分区选择“标准分区”:鼠标单 ...

  10. 实现Android桌面的App快捷方式

    本文描述的是,在App开发过程中,该如何实现App在Anroid桌面上生成App的快捷方式.主要分为两个步骤: 一,在AndroidManifest.xml中声明相关权限: <uses-perm ...