今晚月色真美

前言

最近想学跨平台开发,在RN和Flutter中纠结学哪个,看了资料RN对Web前端比较友好,都是JS开发语言,比较容易上手,但是有个以前的iOS同事,他现在已经用Flutter着手在开发iOS、Android了,据他说很好用。

对比

跨平台,首先考虑的就是性能问题,谁的性能好,未来必将是谁的天下。

RN性能

RN的效率由于是将View编译成了原生View,所以效率上要比基于Cordova的HTML5高很多,但是它也有效率问题,RN的渲染机制是基于前端框架的考虑,复杂的UI渲染是需要依赖多个view叠加。比如我们渲染一个复杂的ListView,每一个小的控件,都是一个native的view,然后相互组合叠加,想想此时如果我们的list再需要滑动刷新,会有多少个对象需要渲染,所以也就有了前面所说的RN的列表方案不友好。

RN框架原理图

RN框架原理图

Flutter性能

而Flutter则吸收了前两者的教训之后,在渲染技术上,选择了自己实现(GDI),有自己的一套UI系统,由于有更好的可控性,使用了新的语言Dart,避免了RN的那种通过桥接器与Javascript通讯导致效率低下的问题,所以在性能方面无可厚非比RN更高一筹,有经验的开发者可以打开Android手机开发者选项里面的显示边界布局,发现Flutter的布局是一个整体,说明Flutter的渲染没用使用原生控件进行渲染。

Flutter框架原理图

Flutter框架原理图

异同

  • Flutter性能会更好无线接近原生的体验,Dart是AOT编译的,编译成快速、可预测的本地代码

  • RN采用JS语言开发,基于React,对前端工程师更友好。Dart语言受众小

  • Flutter自己实现了一套UI框架,丢弃了原生的UI框架。而RN还是可以自己利用原生框架,两个各有好处。Flutter的兼容性高,RN可以利用原生已有的优秀UI

  • RN的布局更像css,而Flutter的布局更像native布局,但是去掉xml通过代码直接写需要适应下

总结

对比了RN/Flutter后,我觉得对于我来说,RN应该很容易上手,因为有前端基础,RN学习起来应该很快,但是我也不想放弃Flutter,Flutter布局像原生布局,有iOS开发经验的我也不想放弃,因为有iOS同事成功上车的前车之鉴,所以我也很有信心能学好它,从性能来说我也更偏向Flutter,但是也不想浪费RN这个学习机会,所以就我自己的实际情况而言,我会两个都学。

总之,一句话吧,基于自身实际情况,没有更好只有最适合你的框架

 评论

本站总字数统计:24.4k

感谢您的浏览, 本站总访问量为 次 。
载入天数...载入时分秒...