闲聊 Flutter

标签: 技术文章 | 发表时间:2018-08-27 12:10 | 作者:bang
出处:http://blog.cnbang.net

移动端开发从08年开始就有个大家前赴后继不断追求的目标:跨平台,15年时 nwind 有篇 雄文,详细调研了跨平台各流派,其中最后的 Dart 栏可以看到现在 Flutter 的雏形。可以看出来,Flutter 是从精简浏览器的思路演化过来的,实际上 web 与 Flutter 从底层看是一致的,web 是提供了一层平台无关的独立引擎,可以看成平台只提供了画布,所有的UI组件、框架、事件处理都是 web 引擎封装处理。其实这种虚拟机方式是跨平台的正道,在 GUI 跨平台的道路上,JAVA 、FLASH 都是这种方式,在 PC 时代都取得过成功,只不过移动端时代只有 web 这种开放标准能平衡各大公司利益,延续下来了。

原本 web 作为跨平台的解决方案很完美,FB最初也信心满满用 web 技术做主 APP,但到最后还是搞不定性能问题,被迫回归原生。为什么web性能不行,上面雄文也说了,历史代码兼容,CSS复杂,DOM接口粒度大等问题,自然有牛人们继续不断去尝试解决这些问题,面对历史包袱满满的 web 引擎,首先尝试的当然是不断删代码删功能,做个精简版的 web 引擎,完全抛弃兼容性,只保留最主要的功能,据 Eric Seidel 说删完后快了 20 倍,于是朝这个方向经过几年的努力逐渐演化出 Flutter。(国外大厂可以花三四年时间做一个引擎且还在Beta,怕不怕?)

Flutter 的推出为略为沉闷的移动端技术注入了一些活力,底子强,包装好,只要接入引擎就能获得跨平台+高性能的特性。不过 Flutter 还是有不少缺陷:

  1. 动态化,国外对跨平台有偏执,国内对动态化的偏执更高,高速发展高压环境,随时发版修改是基础能力,Flutter Release 是 AOT 无法动态化,理论上可以用 JIT 模式做动态化,但目前 Release 上没有 JIT 模式,不确定是否有性能上的问题,国内大厂接入使用少了一个很重要的理由。
  2. 体积,编译后iOS双架构15M+,Android单架构约7M,不算太大,对小APP可以接受,但在大厂大APP普遍严格控制体积的情况下,使用又多一个大障碍。
  3. 语言,从 web 演化过来的框架,为什么不使用 JS 而是使用 Dart?可能出于性能考虑,Dart有 AOT 模式,但使用 Dart 绝对是 Flutter 推广的一大劣势,学多一门新语言就多一层障碍,Java 对 Android 开发的推动,JS 对 nodeJS 的推动,换个语言就不一样了。
  4. 生态,Flutter 刚推出不久,组件功能的完善度和丰富程度自然不能跟发展了十几年的iOS/Android原生以及web相比,虽说生态都是慢慢建立,但这一个从语言到工具到组件都是几乎从零开始积累,无法借用强大的前端生态或其他生态,难度会高很多,堪忧。

不管怎样,Flutter是一个宝库,一个完整的比 webkit 简单得多的引擎,源码很值得挖掘学习,现阶段国内关注 Flutter 也是学习居多,直接使用 Flutter 目前吸引力还不够大,但国内可能有另一个利用 Flutter 的途径:小程序。Flutter 从 web 引擎简化中来,使用的也是 CSS flexbox 布局,但抛弃历史包袱重定规则,不兼容 web 也不是 dom 那套玩意,需要上层业务根据新规则限制写法,而小程序就是这样的限制框架,可以参考 Flutter 构建小程序渲染引擎,相对于 web 渲染性能好,相对 RN 渲染,同渲染引擎坑少,无需维护两个平台框架。可行性待研究,算是一个有趣的课题。

相关 [flutter] 推荐:

闲聊 Flutter

- - bang’s blog
移动端开发从08年开始就有个大家前赴后继不断追求的目标:跨平台,15年时 nwind 有篇 雄文,详细调研了跨平台各流派,其中最后的 Dart 栏可以看到现在 Flutter 的雏形. 可以看出来,Flutter 是从精简浏览器的思路演化过来的,实际上 web 与 Flutter 从底层看是一致的,web 是提供了一层平台无关的独立引擎,可以看成平台只提供了画布,所有的UI组件、框架、事件处理都是 web 引擎封装处理.

Flutter Weekly Issue 51

- - IT瘾-dev
一个易用的 Flutter 应用页面事件埋点插件. 它不仅支持在普通导航事件中监听页面曝光和离开,也支持弹窗的曝光和离开. flutter滑动曝光埋点框架,支持SliverList、SliverGrid. Inner Drawer is an easy way to create an internal side section (left/right) where you can insert a list-menu or other..

Flutter原理与实践

- - 美团点评技术团队
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件. 自从2017年5月发布 第一个版本以来,目前Flutter已经发布了近60个版本,并且在2018年5月发布了第一个 “Ready for Production Apps”的Beta 3版本,6月20日发布了第一个 “Release Preview”版本.

一个 Demo 入门 Flutter

- - limboy's HQ
Flutter 是 Google 研发的一套移动端开发框架,也是 Google 正在研发的下一代操作系统 Fuchsia 的 App 开发框架(Web 和 Desktop 也都在进行积极的尝试),前几天刚发布了 1.0 正式版. 关于 Flutter 的原理和介绍可以参考美团的 这篇文章. 本文希望通过一个 Demo 来更深入地了解 Flutter 的布局、状态管理等细节.

Flutter Go:Flutter 开发者帮助 App

- - IT瘾-dev
帮助开发者快速上手 Flutter 内部测试中,1.0 正式版将于 2月 20日 发布. Release安装包下载地址. iphone下载地址: 暂无. Flutter 是什么?. 2018年6月21日Google发布Flutter首个release预览版,作为Google 大力推出的一种全新的响应式,跨平台,高性能的移动开发框架.

Flutter 2019 产品路线图正式公布

- - SegmentFault 最新的文章
Flutter 1.0 的发布对我们来说是一个很重要的起点,长路漫漫,我们仍有很多工作要做. 这里我们向大家公开我们的产品路线图(Roadmap)规划,一方面是保持开源项目的透明度,另一方面,开发者们也可以根据我们的工作优先级来制定更适合的工程方案. 以下几点我们今年会着重关注:. 我们的计划会根据大家的反馈以及新的市场变化来做调整,这份路线图里的内容不尽然是我们一定会完成的工作.

移动跨平台框架Flutter介绍和学习线路

- - SegmentFault 最新的文章
Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序. Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序. 我们兼容滚动行为、排版、图标等方面的差异. 在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的.

让前端开发者失业的技术,Flutter Web初体验

- - SegmentFault 最新的文章
Flutter是一种新型的“客户端”技术. 它的最终目标是替代包含几乎所有平台的开发:iOS,Android,Web,桌面;做到了一次编写,多处运行. 掌握Flutter web可能是Web前端开发者翻盘的唯一机会. 在前些日子举办的Google IO 2019 年度开发者大会上,Flutter web作为一个很亮眼的技术受到了开发者的追捧.

闲鱼基于 Flutter 的架构演进与创新

- - IT瘾-dev
2012年应届毕业加入阿里巴巴,主导了闲鱼基于Flutter的新混合架构,同时推进了Flutter在闲鱼各业务线的落地. 未来将持续关注终端技术的演变及趋势. Flutter是Google开源的跨端便携UI工具包,除了具有非常优秀的跨端渲染一致性,还具备非常高效的研发体验,丰富的开箱即用的UI组件,以及跟Native媲美的性能体验.

从Flutter聊聊跨平台移动研发方案

- - 掘金 架构
Flutter 是一款由 Google 开发的开源、跨平台移动端开发框架. Flutter 使用 Dart 作为开发语言,这是一门简洁、强类型的编程语言. 它允许使用同一个代码库构建高性能、漂亮的 iOS 和 Android 应用,Flutter还提供了两套视觉库,可以针对不同的平台有不同的展示效果.