Flutter VS React-native

一、相同点

1、 跨平台

2、热更新、热修复

3、响应式视图:采用响应式视图,维护了一个状态机,只更新改变的最小区域界面

4. 调用系统的service仍然需要封装接口,仍然还是需要懂得native开发

4.  提供异化iOS/android组件:对于不同的平台(Android/iOS)提供风格不同的控件,以满足不同平台的设计理念。

5.  JIT:

6. 可以单独作为开发框架完成整个App的开发,也可以与现有原生代码相结合实现混合模式的开发。

二、不同点

1、开发语言和框架

React-native:    React-native组件+JS+桥接native       JavaScript -> react- > React-native

flutter:  flutter组件+ dart语法    dart-> flutter 

2、渲染方式对比:

1>、H5 + 原生

2>. React-native 

3>. flutter 

3、编译效果

flutter 支持AOT(预编译) 能够com+s保存当前文件代码立马出现界面效果,当然修改了多个文件代码时(或开发工具卡顿无法便已同步时)需要点击同步按钮进行同步。

RN 支持JIT需要启动一个终端服务,com+s保存代码,立即重编译,服务更新,界面更新

4. 社区热度和第三方库

RN 由facebook 封装的框架,出生比较早,社区活跃,组件丰富

flutter 由谷歌封装的框架,组件日益丰富

5. 上手难度

原生 > H5 + 原生 > RN > flutter 

H5 + 原生 和 RN 开发对于前端开发人员更简单

flutter 对于移动端开发人员更容易上手, flutter 语言受众比js 少

RN的界面布局更像网页布局,而Flutter的布局更像native布局

6. 兼容性

Flutter在跨平台这方面做得更彻底一些,Flutter的UI框架性能貌似更高一些,但是直接丢弃了原生UI框架。而RN还是可以自己利用原生框架,两个各有好处。Flutter的兼容性高,RN可以利用原生已有的优秀UI

7. 开发复杂界面的难度

Flutter提供了一种响应式视图,无须JavaScript做桥接;强大的API使得实现复杂的页面效果成为可能;高性能的渲染机制使得120FPS的高频率可以轻而易举的实现。当界面上的图片数量越来越多时,与React Native相比,Flutter的优势会越来越明显。

三、性能测试过程:

分别用Flutter、RN、原生开发三个项目,只有一个列表页面,10000条数据,在三款低中高端机型中测试。

通过性能测试得出下表:

性能测试结论:

通过测试得出的数据结果,仅能从大体上比较出三者的性能,可能在实际的项目中会有些出入。

1、包体积原生比较小,Flutter和RN不相上下(Ios系统需要引入Skia库,最终包体积Flutter会明显大于RN),由于Flutter和RN框架中需要一些C++依赖库,导致包体积比原生大了很多。

2、启动时间,Flutter(冷热启动时间)>RN=原生

3、内存占用,在高端手机上,flutter占用内存是大于RN的,但是低端手机Flutter的内存占用会低于RN,RN内存占用不稳定,页面刚生成的时候内存占用会高一点, 之后缓慢回落。

3、CPU占用,RN明显高于Flutter和原生,这会导致手机性能降低、耗电量增加、发热更厉害

4、主观感受,Flutter要比RN更加流畅,体验感更好,但是和原生仍有不小差距,不过Flutter还很年轻,官方宣称其性能会接近原生,甚至超过原生体验,随着Google不断的改进相信在不远的将来会实现这个可能。

参考文献:

Flutter 与 RN对比

Flutter框架的优势

你可能感兴趣的:(Flutter VS React-native)