前两天,也就是5.12日,Google IO 大会上,正式发布了Flutter 3,同时支持 iOS、Android、Web、Windows、macOS、Linux 六大平台。至此,Flutter 完成了从Android、iOS,到Web 、Windows,再到macOS、Linux 三级跳,占领了六大平台。

很久以前

Flutter 是一个Google推出的,用于构建应用程序的工具包。最早主要聚焦于移动平台,支持Android和iOS APP的开发。

为什么会有这么一个东西呢?这和成本、全栈等是分不开的。如果能有一种工具框架开发出来的APP 可以同时运行在Android、iOS两大平台,那么带来不止是UI的统一、升级维护的方便,还有人力成本的降低。

事实上,从鼓吹大前端之前,就有一些一些框架在探索这个方面的可能了。

如果你入行移动互联网编程比较早,应该听说过PhoneGap这个东西,它就可以让你用HTML、JS、CSS 这些Web技术,做出来可以在iOS、Android、黑莓等移动平台上运行的APP。它的好处就在于可以让原来从事Web开发的人员,可以快速开发出来APP,不用再去学OC、Java这些语言。

uniapp

随着移动互联网的兴起,在探索大前端这条路的不止有国外的PhoneGap,还有国内的uniapp。

uniapp是一个使用Vue.js开发的前端应用框架,它不支持可以开发出Android、iOS、Web这类应用,还支持小程序的开发,并且是各种小程序,比如微信的、头条的、支付宝的、百度的,它都能做,这也是它的优势之一。

当时我们在考虑大前端框架的时候,除了Flutter ,也曾调研过uniapp,最后还是放弃它了。其原因主要是2点:性能没有Flutter高;我们小程序版本属于打酱油的,主要还是Android和iOS为主,Flutter还是更合适我们。

其实,如果你是要做小程序,而且要在多个小程序平台上线,可以考虑使用uniapp,一套代码,可以支持11个小程序平台的发布,还是很不错的。

QT、Electron

其实在桌面端,也有跨平台应用开发的框架,而且更悠久。比如QT,它是C++开发的跨平台GUI程序开发框架,和我们今天的大前端有点距离,这里不做过多介绍,有兴趣的朋友可以Google下。

大前端里还有做的比较早的桌面端跨平台框架,它就是Electron。Electron是GitHub开源的,使用NodeJS作为后端,Chromium 作为前端渲染的桌面GUI程序开发框架。也就是说,你使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序,支持macOS、Windows和Linux三大平台,并且不要求本地开发经验,这对Web前端工程师简直是福音。

基于Electron的应用有很多,像我们常用的VS Code,还有前段时间把大疆账户禁了的Figma,都是基于Electron构建的。

为什么是Flutter

Flutter的崛起,其实也是得益于大前端,本质上是一套代码、到处运行,可以统一开发、动态更新、节省人力资源等。

在国内,有几家大厂对Flutter的支持比较大,他们主要是腾讯、阿里和头条。比如腾讯课堂、阿里的闲鱼使用Flutter比较多。

在大前端趋势下,Flutter能被选中,一个是有个好爸爸Google,第二个是性能好,基于Material Design的统一UI设计也不错,而且和原生平台的集成也比较好。

Flutter渲染性能够好,得益于它是基于Skia图形库,所以性能优越。从原生迁移到大前端这类框架的时候,UI渲染的性能本身就是大家选择的时候非常看中的一项,Flutter恰恰具备了这个优势。APP 界面可以打开,并且打开的速度要快,最好能和原生开发的APP一样流畅,那么这个框架就占了很大的优势。

程序员的设计硬伤

最初的Flutter还是主要应用在移动平台上,也就是Android和iOS,随着它的流行,野心也开始膨胀,它开始支持Web和Windows,现在刚发布的Flutter 3又支持了macOS和Linux,移动端和桌面端全包了。

Flutter 3对于六大平台的支持,不止是渲染,还有交互模型、国际化、构建等等,也就是它把底层操作系统的能力封装好了,开发者好好用就行了,把精力放到UI的复用以及业务逻辑的规划上。

对于程序员来说,UI设计一直是个头疼的问题,让我们写代码没问题,但是让我们写一个漂亮界面的系统就有点难度了(如果你有一个设计师女朋友,当我没说)。

现在,这种问题不用再担心了,Flutter 是基于 Material Design设计的,所以我们可以很容易的利用Flutter编写出漂亮的界面。

要选择Flutter吗

选择Flutter,一个比较高的门槛可能还是Dart语言,这是一门新的编程语言,它完全是被Flutter给带火的,至于Google为什么会选择Dart作为Flutter的开发语言,聊起来也不少,可以自行Google下。

现在我们有了Flutter、Electron等这些大前端框架,也有原生的开发方式,至于如何选择,还是要看自己的业务场景。主要问自己三个问题:

  1. 你的应用程序需要跨多平台吗?

  2. 你的应用程序用到的系统能力,Flutter等都可以提供吗?

  3. 节省人力成本,提高开发效率吗?

如果都「YES」的话,那么大前端是你比较好的选择!!!

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站 https://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。

扫码关注