现状
-
原生开发
性能优,但成本高
-
混合开发
各种Html+css+壳,比如APICloud、AppCan。开发体验差,生态环境尚未足够。 React Native Flutter
-
Web开发
通过浏览器调用,性能差
这里着重把RN和Flutter拿出来说
1、都是跨平台
RN理念learn once, write anywhere。不是run anywhere差评
RN同一套代码在两端的表现不一致,因为RN是调用原生控件实现,所以会导致同一套代码出来的效果不同
Flutter是基于图像绘制引擎绘制,不同平台效果一致。能做到write once,run anywhere.
2、 性能优异
RN映射组件,调用的原生控件
Flutter直接基于Native绘制,性能别原生更加高
3、 热重载
RN和Flutter都支持热重载,大大提升开发效率
Flutter
1、Dart语言负责FrameWork层
2、Dart语法执行器
3、Flutter引擎根据不同平台调用各自的图像处理引擎
Android:**Skia图像处理引擎**,它是Chrome、Chrome os、Android和FireFox的图像处理器
IOS:JPEG图像处理引擎
skia本质是对JPEG的二次包装
渲染过程
原生:xml布局--(Dom解析)-->JavaBean--(LayoutInflate填充)-->View---->onDraw()--(api native)-->Skia---->GPU
Flutter:Widget---->自己写一套代码---->直接调用skia
ReactNative:被反射成原生控件
Flutter--FlutterActivity--FlutterView(继承surfaceView)--Flutter.so
React Native--ReactActivity--ReactRootView(继承FrameLayout)--reactnative.so
性能
初始项目:Flutter比原生apk大很多,因为Flutter自带Flutter引擎,会编译到apk中