目前移动互联网时代,人们越来越多地使用手机和智能移动设备来完成生活中的许多事情。而移动应用的开发也就变得更有需求,目前iOS和Android两大阵营的应用不计其数。而对于iOS和Android应用通常是两种方式开发即:1.原生开发,2跨平台开发。本次要说的Flutter属于跨平台开发的方向。
选择合适的技术
对于很多小的软件公司来说,人力成本是重要的考量因素,当开发一款App时候如何节省人力则是老板经常考虑的问题。一般来说如果用原生开发,至少需要iOS和Android工程师各一名,而iOS和Android工程师的薪资又是不低的。所以就会经常采用所谓的混合开发,因为大部分的混合开发框架例如ionic等都是基于JS和H5来实现,对于有Web开发人员的公司,当然觉得这是一个非常不错的选择。即完成任务,又节省了人力,何乐而不为呢?
理论上没有错,但实际操作却是不一定的。对于类似ionic这类框架,虽然从语法和使用习惯上接近于Web,但内部机制或许作对于Web开发人员来说,也需要花费时间去学习。在实际运用中可能会遇到这样或者那样的坑,而这些因素很可能导致项目的进度delay。而对于原生开发者来说,他们更了解原生SDK的情况,可能效率会更高一些。另一方面执行效率或者说应用流畅度也是一个重要的因素,之前的混合开发框架有些在Android的机器上表现的并不是很让人满意。后来谷歌推出了Flutter,一款跨平台开发的框架,同样可以一次开发,同时在iOS和Android两个平台运行。
走近Flutter
Flutter最出色的地方就是自建了绘制引擎,使得跨平台开发一套代码可以创造出和原生应用相同的体验。并且Flutter开发效率非常高,SDK里所有的布局、控件都组件化,采用React方式。有人用一个比喻来形容原生、传统混合开发和Flutter的区别。原生就像是内燃机,ionic类似的混合开发就像蒸汽机,而Flutter就像混合动力。Flutter的流畅度和原生比较非常的接近。
Flutter的学习成本
有人会觉得Flutter用的是dart语言,学习成本会很高。其实这个问题可以从几方面来考虑。对于一个合格的开发人员来说,语言应该不是门槛。同样的ionic之类的Hybrid开发方式同样需要学习成本,一般的俗家弟子很可能会在开发过程中遇到坑。Flutter作为谷歌的亲儿子,怎么说也是和Android都属于谷歌的子嗣。优化考虑等工作,相信谷歌也会有特殊待遇。而对于iOS开发者来说,学习Flutter的成本同样不会很高,因为不难发现SwiftUI的相似之处是非常多的。类似的编程方式,反正怎么看怎么像。因此,学习Flutter获取成本并不像想象的那么高。
Flutter社区的成熟
目前Flutter的稳定版本已经到V1.20,而社区环境也非常的成熟,比较熟知的就是咸鱼App就是用Flutter编写的。而大量的flutter插件也被开发出来,让flutter的开发更加简单,不用去重复造轮子了。
因此,作为一个很成熟的框架,我觉得对于Android和iOS开发者来说,可以去尝试着扩展自己的技术栈了,Flutter是个不错的选择。而对于小的公司来说,Flutter的性能优势,或许能让你的客户选择这种跨平台的方式。