哈喽,我是老刘
我们团队使用Flutter已经5年多了,当时选择Flutter的时候也是做了一些各个框架的对比的
不过那时候没有对比过Tauri
所以这里先说说Tauri,然后对比Flutter和Maui
Tauri
如果我的信息没有太过滞后的话
Tauri 目前支持移动端的V2版本还是beta阶段
那来看Tauri的架构,其实就是UI层面通过系统Native提供的功能去渲染网页
底层调用系统功能则是通过Rust实现
所以其实它的架构和Electron是最接近的,可以看作是对标
正式发布后的效果如何还要看正式版的优化和生态
不过从目前的架构来看
在手机端我觉得性能很难做到太好
因为它很难突破网页的性能限制
那么接下来看看Flutter和Maui的对比
Flutter vs MAUI
MAUI的架构
和RN其实很类似
MAUI的控件,最终在各个平台上会调用原生的系统控件
由系统控件完成最后的展示和渲染
而C#开发的代码作为业务逻辑的中间层
看下面这个按钮的实现
这种架构的好处是上层框架可以不用考虑各个平台的渲染问题
但是也带来了以下两个问题:
1、平台一致性、兼容性不够好
这点其实很好理解
既然UI绘制最终交给了各平台的原生控件
那么如何保证一个上层控件的功能,在不同平台的原生控件上都有对应的实现?
如果一个功能在某些平台上有某些平台上没有怎么办?
而一旦在原生控件部分产生bug
那么开发人员就必须要回到原生代码层面进行定位和解决
这就进一步造成了碎片化和兼容性问题
2、存在一定的性能损耗
这个问题我举个例子进行说明
比如我们要实现一个拖拽功能
就是在屏幕上点住一个元素,然后拖拽到屏幕其它地方
而且元素在屏幕的不同位置要显示不同的颜色
那这个代码如果在上层框架部分实现
就需要元素在屏幕上每移动一个像素
都从原生传递一个移动事件给上层框架
上层框架根据移动的位置计算颜色等显示信息
而这种大量的实时数据传输,会严重拖慢性能
那么再来看看Flutter架构,为什么Flutter没有类似的问题?
Flutter架构
Flutter最大的特点就是自带绘制引擎
也就是说Flutter抛弃了调用原生控件的思路
转而通过集成一个绘制引擎
把所有UI展示的工作自己实现了一遍
换个说法,Flutter相当于把原生UI替换掉了
这也就是为什么Flutter可以避免上面说的那些问题的原因
来看原生、MAUI和Flutter的架构对比
所以在目前的这种架构体系下
我更看好Flutter未来的发展
当然,如果Flutter的开发语言能换成C#那也是极好的
或者MAUI也集成一个渲染引擎也是很不错的方案
好了,关于几种跨平台框架的对比,就先介绍到这里
如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》https://mp.weixin.qq.com/s?__biz=MzkxMDMzNTM0Mw==&mid=2247483665&idx=1&sn=56aec9504da3ffad5797e703c12c51f6&chksm=c12c4d11f65bc40767956e534bd4b6fa71cbc2b8f8980294b6db7582672809c966e13cbbed25#rd