flutter对比react native的优劣势在哪?

最近入坑了flutter,尝试了flutter的示例代码,感觉比react native简单很多, 很快就可以编译成功,并运行在ios和android,之前也曾经尝试过很多次react native的一些例子代码, 各种报错,结果放弃。现在也使用flutter开发了简单的带有路由,state管理的app, 个人目前是非常看好flutter。而且性能方面确实要比react native强。


观点一:

如果你还在犹豫是使用flutter还是用rn的话,强烈建议你选择flutter。

就框架产品现阶段的完成度来说,flutter的完成度要比rn的完成度来说要好太多了,不管是用vscode开发,还是用as开发都非常方便,支持工具也非常完善,特别是devtools非常容易的查看和调整界面布局。

学习上官方文档也非常完善,如果你可以上youtube的话,可以看到他们官方有好多简短有趣的学习视频,很容易就可以入门。另外dart语言和js相比,有更好的强类型支持可以更好的避免你开发的程序在运行时出现低级错误,从而开发出更加健壮稳定的程序,dart还可以直接编译成机器指令,相对js的运行时编译会有更快的速度。

再一个是开发效率,skia的渲染引擎支持,flutter只需要编写一次代码就可以在ios和安卓上获得一致的运行效果,而rn却需要为ios和安卓的一些差异编写不同的代码,写出来的程序也很难得到一致的体验,而这些在flutter中完全不是问题,当你写完一个界面的那一刻,你会感觉,真是太爽了


观点二,

性能差别很大。

如果是静态页面两个区别不大,如果是动画或者是需要实时计算的渲染,比如长列表,rn的帧率简直连h5都不如,js通信的开销非常大,会导致大量的js任务阻塞在队列里,直接的反应就是flatList快速滑动会出现因为通信开销问题导致白屏,另外由于严重依赖原生的view导致bug很多,稍微复杂的手势基本没法搞,滑动冲突都搞不定,另外scrollview.flatList都有很多bug,连手指抬起都没办法监控,提供的api严重不足,bug也很多,很多情况下只能写原生的控件,然后rn来调,费时费力,可以说从实现方案上面来讲rn依赖原生view体系,原生本身都不够完美,在此之上会更差,总而言之rn不适合对动效有要求,对性能有要求的应用,搞些简单的小页面还是可以的,flutter直接基于原生绘图引擎,自带UI体系,理论上可在未来支持任何系统,从根本实现和思路上就完爆rn,甚至未来的ui框架都可能会走flutter的实现思路,目前rn的问题是video方面还没有特别好的开源方案,实现起来较为复杂,ui性能方面与原生还有一些差距,好在拥有自己的ui体系,在此基础上写自定义控件较为灵活,甚至比原生更方便,image自带内存管理很省心,列表不用关心复用问题完爆原生,flutter问题是组件嵌套有些严重,代码看起来不太简洁,但是这个也不是不能解决,现在flutter还不支持代码热更新,这也是一个问题,但是即便可以热更了,也是采用虚拟机的方案,性能会有下降,

如果对热更新没有要求,两相比较下,还是flutter用起来更省心,rn的性能和bug大部分情况下都无解,要么就得原生实现,既然这样我干嘛用rn

0%