对于开发hybird app
首选哪个好?是ionic
还是react native
?
如何评价ionic
和react native
?
说说你比较喜欢哪个?以及喜欢它的原因是什么?可以从学习成本,流行趋势或者原生支持等方面来讨论
对于开发hybird app
首选哪个好?是ionic
还是react native
?
如何评价ionic
和react native
?
说说你比较喜欢哪个?以及喜欢它的原因是什么?可以从学习成本,流行趋势或者原生支持等方面来讨论
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将模板和数据相结合了。。
总结: 个人比较喜欢Ionic
,React Native
没有想象中的那么好
无耻地丢几个Github:
Ionic应用:
https://github.com/phodal/designiot-app
https://github.com/phodal/learning-ionic
React Web:
https://github.com/phodal/backbone-react
之前问一个大神同样问题的时候,他告诉我说这两者的关系就像是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或一般的安卓商店下载体验下。
我看好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的理由