如何评价ionic和react native?

对于开发hybird app首选哪个好?是ionic还是react native
如何评价ionicreact native

说说你比较喜欢哪个?以及喜欢它的原因是什么?可以从学习成本,流行趋势或者原生支持等方面来讨论

阅读 33.7k
9 个回答

我看好React系,React系以正确地姿势,专注地做了正确的事情,未来前途光明,这里不多吹

我是Angular黑,Google是一家Java公司,Angular出生的姿势就是非常有问题的(让Java开发也能快速开发前端),Angular很好的达成了他的目的,让前端开发看上去像后端一样,但问题是前端开发终究是前端开发,不学前端开发永远做不好前端开发。后端开发不学前端开发,翻翻angular确实能做一些原来前端才能做的事,但真的维护起来,调起性能起来,结果就是直接傻眼。 而真正的前端开发则要花大力气了解angular的为了后端开发舒服而搞的大量复杂机制,才能“正确地用angular开发”。 angular新版直接打脸基本印证我的说法,他们意识到自己的姿势有问题,所以开始痛苦地转型,至于效果如何,我还没研究过新版的angular,但个人持悲观态度。

至于Ionic vs React-Native,我觉得抛开我对angular的成见不提也完全不用比,相差不多开发成本下,一个做出来是Hybrid,另一个做出来是Native。 抛开开发成本不看的时候,Native比Hybrid好应该是毋庸置疑的吧。

另外和我刚刚的分析类似,你要把这些框架放到他爹的情况里去考虑,Facebook是移动端大力做HTML5做Hybrid,结果性能实在不行然后app端宣布转投Native的,后来React是他们做网站的时候开源出来的,React火了以后他们做了React-Native。Facebook肯定研究过Ionic,他们是最早最大规模的H5和hybrid app的实践者,那么至少Facebook是认为Ionic以及h5 hybrid本身无法满足他们的需求,才会有后面的React-Native的。如果React-Native的开发成本和Ionic类似(其实我觉得react应该还低),真的没有任何用Ionic的理由

ionic我就不吐槽了,到如今压根没有一个亮瞎人眼的app,在安卓上卡到爆,那动画效果,看了,简直就是感动的要哭。

React-native个人觉得思路是对的,但是目前有很多限制,首先就是性能问题,内存复用和稳定性问题。Listview的性能问题不解决,rn就难以上大舞台,因为一般来说,无限的列表对于一个app来说是很容易遇到的问题。在rn中,对listView的处理很奇葩,是用一个scrollview来包装,所以你懂得,所有的列表都会被渲染,当你的列表有五百条时,哈哈,你的手机扛得住么?这个与ios原生的tableView有区别,ios的tableView是屏幕显示5行,内存里就7行,所以无论列表如何变动,内存就那么点。rn社区刚开始也尝试过做一个tableView的component,但是失败了,所以,此事无疾而终。而我曾经尝试过从js角度来优化listView,也就是没有在屏幕显示区域内的row都设置为空,但是保持高度,数据没有,尤其是把image清了,然后根据滑动来动态渲染,可惜,pc上跑还ok,一旦在iphone6上跑,滑太快了就跟不上节奏了。iphone6都这样,其他就不用说了。

稳定性上,问题很大,因为如果真的使用rn去做一个production级别的产品,需要依赖很多第三方的库,但是第三方的库,稳定性不行,因为rn才刚刚起步,并没有很多很好地开发者去贡献库,所以,会出现各种问题。

但是总体表现来说,rn比ionic要好很多,虽然目前也有很多坑,但是,这才刚刚起步,所以,看看facebook如何填坑吧。

关于上面所说的性能问题,可以查看noder(https://github.com/soliury/noder-react-native),你跑一跑就知道listView是有多吃内存。

会考虑hybird app的只要原因是,hybird app可以跨平台。
react native现在只能开发iOS应用,Ionic是基于Cordova + AngularJS,跨平台不是问题(目前对WP支持不好)。

用过Ionic开发过几个应用,Ionic用的还是Web的逻辑,总的来说学习成本很低。
用React(Web)开发过应用,看了看React Native,作为一个Web开发者,模板和数据分离是比较能接受的,但是React将模板和数据相结合了。。

总结: 个人比较喜欢IonicReact Native没有想象中的那么好

无耻地丢几个Github:
Ionic应用:
https://github.com/phodal/designiot-app
https://github.com/phodal/learning-ionic

React Web:
https://github.com/phodal/backbone-react

用过ionic开发,感觉用了1天的时间,现学现做,就做成了,时间成本低,学习曲线也低。

虽然angular多了很多java思维,但我觉得这些思维可以开阔前端思维,是好事,而且用起来也很易懂。

新手上路,请多包涵

之前问一个大神同样问题的时候,他告诉我说这两者的关系就像是bootstrap和jquery的关系一样。

我理解的是,reactjs是给了前端开发人员一个使用js开发原生应用的机会,提供了一套各个平台通用的语法结构api等等,使前端开发人员可以使用现有的知识进行移动平台APP的开发,是使用相同的知识进行 不同平台的开发,也就是你要为ios和android同时写两套代码,只不过是用的相同的语法结构啥的,可以共用同一批开发人员开发维护(并没有使用研究过reactjs,所以可能不准确哈~);

而ionic是一套基于angularjs的前端框架,提供了一套通用的组件,同时可以通过cordova插件来调用手机原生特性,可以真正的Develop once, deploy everywhere。

而且reactjs要到10月份才能支持android,现在学习了做知识储备还行,如果现在就想要实际应用建议还是选择ionic比较好(纯属个人意见哈~~~)。

ionic 和react-native 不是一个层次的东西,
react-native开发的是native app
不是 hybrid app

目前react-native android 已经开源!

原生跟js当然是不能比,如果你要做的app很注重性能,那干脆也别用react-native,就用原生代码写,性能的高低直接由你的技术水平决定。
react-native本身比ionic学习成本高,对开发人员要求更高,不是懂点web技术就行的,在目前还未成熟的情况下,当官方API和控件不满足你的需要时,就必然需要懂一些native的东西去扩展。既然如此,还不如你写原生,对性能有更大的把控。
而ionic,极大加快你的开发速度,提供了一套完整的UI和并对很多原生控件做了封装。同样,app性能主要是由你的技术水平决定,不要把框架的性能当做借口。我接触过几个优化得非常好的ionic app,如微众银行app,艾黎思,ViceVersa,你压根看不出它跟原生app的区别。
前段时间,我用ionic从零学习到开发只用两个月时间就完成了 “美比” app,大家可以在appstore或一般的安卓商店下载体验下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏