Flutter和RN对比

一、采用语言
Flutter开发语言是Dart,RN开发语言是React

React是JS语法,前端工程师上手快一些。通过css控制UI样式,可读性较高。

Dart是谷歌新推出的语言,风格跟Java kotlin JS有些相似的地方,是通过AOT编译的,可以快速编译成原生代码,直接跟系统进行通信。UI各种嵌套,可读性较差。

二.实现原理:
RN:利用JS来做桥接,将JS调用转为本地代码调用,底层代码会调用不同平台原生代码,会存在一套代码在不同平台展示出不同的样式问题,差异比较大。一些API、属性只支持某个特定的平台,经常在代码判断平台使用不用的API、属性等,兼容性比较差。
Flutter:自己实现了一套UI框架,是底层自己实现图形设备接口,直接在渲染系统上画UI,兼容性高,一个页面是一个整体,效率也高。

三.代码调试
RN:因为RN代码是JS语言,所以需要在浏览器中调试

Flutter:可以在编辑器中直接下断点调试,相对于RN,Flutter这种调试方式比较方便,更符合原生调试习惯。

四:集成难易程度及APK大小变化:
RN:在之前项目做过接入工作,通过桥接方式,步骤比较麻烦

Flutter:集成到项目中比较简单,可以将Flutter代码编译成一个Module直接引入到已有的原生项目中,包括后面原生和Flutter交互可以自己写插件。可以参照我写的接入文档:https://blog.csdn.net/qq_26936889/article/details/90768742

Flutter:新创建一个项目,之后通过以上方式集成Flutter,得出以下结果:打包前:2MB 打包后:6.5MB,但是IOS项目体积会比较大,因为需要额外集成绘图引擎(Skia)

RN:根据之前项目集成RN经验,原生集成APK大小会增大10-20M,因为RN so库体积太大,之后通过拷贝RN源码,去掉没有用到的so库解决此问题,但是也会是APK变大。IOS在这方面比较好,不会存在此问题。

五:性能
据网上评测,Flutter在高低端机的CPU上的表现都优于RN,尤其在低端的手机优势更明显

六:第三方库
因为RN出来时间比较早,有些库还可以跟Web共用,所以在这方面RN要优于Flutter,在项目中使用会出现重复造轮子情况

七:热更新
RN 支持,Flutter暂时不支持。

总结:
基于以上一些原因和实际代码编写体验,我认为Flutter比RN更优秀且更有前景。但是无论使用哪种跨平台语言都需要冒一定的风险,遇到问题不一定能够 hold 住,短时间内也不一定能带来多少效率上的提升,还要对支持体系进行改造,成本比较大。

你可能感兴趣的:(Flutter)