为什么我会选用Flutter写App

299 阅读4分钟

为何选用Flutter?

对于App开发,能选用的技术非常多。从原生方案到H5,再到混合类的技术方案React Native, Flutter。 大家在选择技术方案的时候,当然会结合自己团队的技能和需要的解决方案的特性来决定自己或者团队最终的技术框架。

我自己在使用Flutter之前也用过很多技术方案:比如iOS端老的Objective C,Swift,安卓端的Java,当然也有大家熟悉的H5的各种框架技术React,Vue,当然还有现在在用的Flutter。

下面说说我对这些编程语言或者技术方案的使用体会:

原生类的技术方案: 好处是可以把使用体验做到最佳状态,毕竟原生方案都是各大平台在自己的底层上构建的,因此原生语言在很多性能方面会更容易做好优化。当然有优势也必定会有劣势,不跨端开发效率相对其他非原生方案速度慢。要开发Android和iOS平台,需要两个端都各写一遍,这个对于初创产品开发成本还是挺高的。

下面说下主流的非原生方案: 大部分非原生方案的第一特性就是跨端,这个也是非原生方案会诞生的很重要的点,毕竟对于开发团队来说,都是有最求复用代码和提高开发效率的需求的。现在主流的非原生跨端方案,我会把他们分为三大类:

第一类是基于纯H5技术的,比如 PhoneGap、Vue.js、React.js 这些通过把 网页包壳的方式,然后通过插件提供一些元素API调用来进行。这种方案的好处是真的很跨端,会Web开发就可以开发App,技术门槛也降低了。另外一个好处是,可以做自动更新。缺点是,不同的设备的内置浏览器型号不同,会有适配一些适配问题,另外毕竟是网页技术,和原生相比流畅度还是差一些的。

第二类是扔掉了网页层,最终借用原生进行渲染,然后使用一种胶水语言作为跨端方案的。比如:React Native,Weex。这一类的方案中把Web层直接拿掉,多数方案使用一个JavaScript引擎来解析业务代码,然后通过框架提供的和原生组件相关的渲染来实现跨端。和第一类技术方案相比,这一类方案在性能上会比H5加壳方案更好一点,毕竟在用原生渲染提供支持,兼容问题也基本由框架来抹平。当然对于使用这类技术,原来的H5的网页层被干掉了,所以需要学一些新的组件表达的方式,React Native 和 Weex之类的方案都是属于这个类别。

最后一类是直接把跨端胶水语言JavaScript干掉,把借用原生渲染的思路也干掉,从编码语言到设备渲染都自己搞定,当然搞这一套下来,没有点实力的大公司团队,是搞不下来的。这就是要说的Flutter。语言层面使用Dart,有自己的一套编译规则。渲染层面也是内建了渲染引擎。带来的好处是体验可以做到更接近于原生,而且依然跨端,性能上也可以做的非常接近原生。缺点是相对于前两类技术方案,基本上是重新搞了一套,所以对于新人入手来说有一些学习门槛。

再来说说我为什么会使用Flutter。因为我是做独立开发的,所以自然会有跨端的需求,但是又希望跨端技术能够尽可能用户体验要好,所以基于这两个点,Flutter是我目前所知道的符合我需求的最为接近的技术方案。

下面是我最近用Flutter写的一款壁纸应用,拾光壁纸,目前已经上架App Store了。

使用Flutter开发产品,整体的感受还是不错的。第一个感受是Flutter整体的迭代节奏快,基本上一款App开发下来,Flutter已经迭代了好几个版本。另外一个社区提供的各种扩展插件还是非常丰富的。另外一个很重要的因素是,可控自由度大,灵活性大。同样的一个布局你可以用好几种思路去做,然后对性能优化如果纯Dart方式还不能满足你的需求,你依然可以通过写插件的方式去使用原生方案。

WechatIMG153.png

WechatIMG154.png

如果你对Flutter有兴趣,想要看看Flutter做出来的应用究竟如何,可以去体验下这款应用。

毕竟其他说的再好,不如自己的体验来的最为真实可靠。

也欢迎大家与我交流探讨~ 可以在评论区写出你的想法~