Skip to main content

20240728

今天是在移动端开发的重要一天,因为我一直在思考一个问题。如何高效的搭建一个跨端App。在harmony出现之前,可能只有两端,我们还能努力让两端开发者努努力,咬咬牙在可预计的成本之内开发和维护一款app,但是今天,这个问题几乎不太现实了。现在,在国内的开发者必须要考虑在RN和flutter之中选择一个框架,并将其作为生产工具。

我自诩对RN有一些了解,因为了解一些RN的源码和Android侧的RN实现,所以大致了解RN的开发体验,在RN开发中时刻需要思考目前场景在RN开发中是否有性能瓶颈,并且针对这一情景,是否需要手动构建组件或者Api来支持RN侧开发。这是颇为头痛的一件事情,并且RN在实际开发中需要对打包做一些工作,才能对其真正能力进行挖掘。例如需要自实现拆包,动态化。只有这样才能讲RN是完整的。否则就是严格版本的RN。

但是在个人App的制作过程中,我有一个问题,我是否需要进行动态化,我貌似并没有这个场景。我貌似并不需要对某个场景进行动态化。我只是需要一个高效的框架,对app进行重构和开发。动态化场景对我而言并不是很重要,而且因为harmony的rn适配存在一些否则的问题,从而可能RN在各端表现极其不一。可能需要大量适配。

所以寻找一个高效的开发框架,并且符合自己的开发预期是极为重要的。今天我觉得flutter真的很满足这个特性。无论是调试还是开发,真的要比RN舒服太多了。而且因为我并不需要对app大小进行诸多考虑和历史包袱,flutter是极好的选择,并且在一篇flutter和RN的评测文章中写到,在普通情况下,flutter性能在IOS端可能好于swift开发。早Android端也只是比kotlin/java慢一倍左右。相比于RN这是天壤之别,我只需要开发,而无需关心开发以外的事情。

随着目前flutter不如3.0阶段,flutter生态进一步成熟。移动端中flutter比重也会越来越重。所以需要对flutter开发进行深入了解,并且如果可以的话最好对flutter社区做一点点贡献。

还有flutter支持ffi,从而可以直接与c++层交互。这更是RN无法想象的。flutter是移动端的未来,并且未来已来。

https://medium.com/swlh/flutter-vs-native-vs-react-native-examining-performance-31338f081980

并且从这一篇很出名的对比博客来看,两者差距巨大。

拖拽效果

在rn开发中甚至没想过能做到拖拽效果,但是flutter竟然有拖拽组件。一些简单的代码即然能做到rn不敢想象的效果。

代码连接: https://github.com/Hao-yiwen/flutter_study/blob/master/flutter_application/lib/pages/drag/ExampleDragAndDrop.dart