@
nnegier 首先开发效率方面,这个不用多说了吧,现代化的前端框架已经证明了数据驱动模式的开发效率远超事件驱动+手动修改页面的模式
而对于运行效率,这个就很深了,您的这句“flutter 是在原生层上面的一层转化,在怎么牛的开发用 flutter 都只能无限趋近原生”从原因到结论我都觉得有一定问题。
先说“flutter 是在原生层上面的一层转化”这点,这句话我认为对、也不完全对。因为 flutter 没有用原生的 UI 组件及系统,而只是利用了原生创建一个 View 或者说画布,其他的绘图和渲染逻辑几乎都是自己实现,所以它的运行效率是完全有可能高于原生方式开发的 UI 界面。打个比方,假设现在的手机的绘图性能是 100 点,原生提供的 UISDK 的效率是 80 点(不要以为系统 sdk 的实现就是最高效的),那么如果是绕过 UISDK 的限制,直接调用系统绘图,那么完全是可以超过 80 点的,就好比用 UISDK 去做游戏,相比于 Unity 等引擎,都不用比效率,可能做都做不出来。虽然拿游戏和传统 APP 比可能不太合适,但是 flutter 的模式本质上就是更接近游戏引擎。
再来,即使是基于原生组件的方案,比如 RN ,我觉得在一定程度上也是可以实现超过原生的体验的。打个比方,为什么现在的前端框架都敢说自己的效率比传统模式快,其中一个原因就是各家几乎都有自己的 diff 算法可以提高效率,所以在上层通过一定的手段和方法进行优化,实现超过直接编写原生代码的效果在某些情况下也是可能的。
最后就是限定词“大牛”,水平足够高的时候会懂得利用各种方法方式来解决问题的,比如同样一个算法问题,牛人可能用 python 写,都比普通人用 c 写出的效率高速度快。举几个例子,同样是处理比较多的数据,水平一般的可能就直接全量处理然后造成卡顿,高手可能随手就用异步、子线程、分帧、过渡动画、预处理等等手段,将体验优化得非常好