这些天趁着项目闲暇时间,研究了下Google最近发布的Flutter移动跨平台方案,作为一个非常支持大前端概念的人,移动应用跨平台方案是未来趋势,之前研究RN很久,成功开发了一款纯RN的应用,不写一行原生代码,复杂程度应该是比目前正在开发的端应用复杂,集成了用户系统,订单系统,订单管理系统,IM聊天系统。个人觉得RN还是很不错,只是在一些功能上还需要单独在ios或者android这块进行,可以使用原生提供模块组件供js调用也能很好解决,但是需要个人开发者同时具备js、ios、android的知识体系了。接下来言归正传,介绍下Fluter
Flutter使用全新的Dart语言开发应用,预编译成两个平台的原生代码。js、安卓、ios都不需要会,只要一门。dart目前也支持h5的编写,三端同构理论上可行。
性能方面,相比RN没有了brige桥接这块,理论上会优秀点,但目前app体验来看,没有太大感知。
不支持原生组件在Flutter中的调用,这个相比RN而言,拓展新弱了很多。RN支持原生组件在js中调动,可以解决目前像第三方框架 QQ登录、微信登录、支付宝 没有ReactNative SDK的支持,但是只要在原生中接入好对应的平台sdk,提供个组件给RN使用就好。
官方image的解码和渲染都是同步进行的,图片解码是个耗性能的事,涉及io操作,且没有很好的缓存机制。加载好的图片,重启app必须重启一次。
官方列表组件,app中最常见的列表,Flutter的ListView似乎没有对组件进行内存的复用管理,列表越长,内存使用越高。这是ReactNative 4.4之前的版本都有的问题,后来的FlatList对内存有改进。在RN中对列表追求性能更高、更优化,可以使用原生自定制列表组件,提供给RN使用。
综上,Flutter目前处于初级完善阶段,框架从设计上说很牛逼,但是要解决的问题也很多。个人还是比较看好。
由于刚识Flutter不久,文中难免有错误,不对的地方,希望大神指出。