斗胆,谈谈我对Flutter的理解

Posted 前端之巅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斗胆,谈谈我对Flutter的理解相关的知识,希望对你有一定的参考价值。

1、3 月 4 日,Flutter 2.0 正式发布。这个大版本中最大的特性是 Flutter 可以支持五大主流的操作系统:iosandroid、Linux、Windows 和 MacOS。甚至官方还说丰田将会把 Flutter 带入到汽车中。哇塞,也就是说,我们可以用一套 Flutter 代码适配全平台了。

2、不吹不黑地说,Flutter 正在被大公司采用,包括西瓜视频、微信、闲鱼、腾讯 Now 直播。一个新技术的普及,企业级应用一定会先在头部互联网企业产生,并逐步优化降低门槛。现在,我们看到,用 Flutter 的大厂越来越多。那个临界点,应该快到了。

3、跨端技术是程序员一直在研究的课题。你还记得吗?Java 当年的那句口号是:一次编写,处处运行。当年,各种小型机、中型机、大小型机,操作系统不一样,CPU 指令集架构不一样,所以 Java 通过 JVM 可以很好的解决多平台部署的问题。

4、但后来,Linux 一统天下,指令集架构也有几家独大,就像秦统一天下一样,“车同轨,书同文,行同伦”,服务端跨平台的问题,就这样消失了。特别是有了 Docker 这样的技术后,甚至大家都已经忘了 Java 那句经典的 Slogan 了。作为对比,你可以看看如日中天的 Golang。

5、之所以说到 Java,是想从另外的维度去思考跨平台这件事。其实,移动端的跨平台,从 2009 年的 PhoneGap 开始,大家就一直在上下求索。这些年,出现在我们视野里的技术,还有 Ionic、React Native、Weex、Kotlin Native。这背后,我觉得核心问题都是,App 应该如何重新定义渲染引擎,又应该如何像 html5 一样提供标准化的页面。

6、目前,主流的跨端方案,主要分为两种:一种是,将 javascriptCore 引擎当作虚拟机的方案,代表框架是 React Native;另一种是,使用非 JavaScriptCore 虚拟机的方案,代表框架是 Flutter。

7、JavaScriptCore, 原本是用在浏览器中,用于解释执行网页中的 JavaScript 代码。为了兼容 Web 标准留下的历史包袱,无法专门针对移动端进行性能优化。Flutter 却不一样,它一开始就抛弃了历史包袱,使用全新的 Dart 语言编写,同时支持 AOT 和 JIT 两种编译方式,而没有采用 HTML/CSS/JavaScript 组合方式开发,在执行效率上明显高于 JavaScriptCore 。

8、从技术先进性上看,我还是看好 Flutter。不过,Flutter,也本身还是有些问题。这很正常,就像 InfoQ 那篇文章《Flutter 正在被悄悄放弃吗》里面说的一样,技术的发展也必然有它的规律,就像我们的生活一样,肯定是问题不断,你不能等着完美了再上,因为,那一天,可能永远不会到来。

9、有人说,本来用 Flutter 是想节省成本,开发确实快,但实际上有一堆坑,比如你要在写插件和环境搭建上花费大量时间,成本变相回来了。

10、这问题其实也很简单。闲鱼的宗心是这么说的,对于效能和性能相关的问题适用于所有跨平台技术,跨平台技术本质是渲染引擎和逻辑的统一,无法做到不同平台特性的统一。另外,性能本身一定是一个 Tradeoff,就当前的性能来看,Flutter 不能算非常出色,在滚动,长列表等具体细节的感受上,确实不如原生流畅,但差异没有大到不能接受。 同时,对于正在更新迭代的技术来看,我们有信心在未来看到性能的进一步提高。

11、针对效能和性能,宗心的看法是,随着生态的完善,进入门槛会进一步降低,插件生态也会相对丰富,一次性的成本会越来越少,在持续投入的过程中,效率会逐步产生质变。性能目前来看,随着版本的持续更新,一些问题和体验细节会由社区完善,目前 Flutter 的很多细节是没有浏览器内核做得好的,因此还有不少提升空间,但理论上来说浏览器能做到的,Flutter 也可以。

12、在 2020 年 6 月 InfoQ 的一篇采访中,西瓜视频 Flutter 团队的负责人徐东说,西瓜视频大概有三十个左右的页面使用 Flutter 开发,人效基本能提升 50%。但是,在引入 Flutter 的过程中,他们也遇到了很多问题,比如 Android 系统字体问题、iOS 原生手势和 Flutter 内部手势冲突问题、状态管理问题。

13、也有人会担心说是不是刚切换到 Flutter,马上就会有个新的技术出来,就像我们团队当年用 weex 一样,用到一半,发现了很多坑,然后也看到了 Flutter 的各种好。我想说,应该不会,目前看,Flutter 的势能更大一些,他的天花板很高,技术也足够先进。

14、Google 这公司,我觉得目前看,它有几个伟大的技术发明,一个是 Android,一个是 Kubernetes,一个是 Flutter,这三个,我们都可以把他们称为“操作系统”。啥是操作系统呢?向下抽象,集成各种不同的设备、端和硬件,向上给开发者开放接口,构建生态。

15、听说字节跳动现在也成立了一个 Flutter Infras 团队,种种迹象表明,大厂都在快速采用 Flutter 中。到底是不是这样?今天(3 月 25 日周四)晚上 8 点,我邀请了字节跳动的徐东,来和你聊聊,他看到的 Flutter。