卖桃者说
池建强
极客时间创始人、墨问西东创始人
30376 人已学习
免费领取
课程目录
已完结/共 523 讲
第一季 (135讲)
第二季 (134讲)
第三季 (124讲)
第四季 (90讲)
卖桃者说
15
15
1.0x
00:00/08:36
登录|注册

第271期 | 革命性的跨平台解决方案Flutter

讲述:池建强大小:7.87M时长:08:36
你好,这里是卖桃者说。
前几天有个做前端的同学问我,“现在 Flutter 非常火,我要不要跟进学习?”
要判断是不是需要主动学习一个框架,显然要先弄清楚这个框架的来龙去脉、同类竞品如何等信息。
极客时间上其实有不少关于 Flutter 的信息,比如专门讲 Flutter 的《Flutter 核心技术与实战》专栏,在《Android 开发高手课》、《iOS 开发高手课》等移动开发相关的专栏里,也都提到了 Flutter。今天,我们就来梳理一下这些信息,让你对 Flutter 有一个较为全面的认知。
Flutter 是谷歌推出的一个跨平台移动应用开发框架,可以帮助开发者快速在 iOS 和 Android 上构建高质量的原生用户界面。2018 年 12 月, Flutter 1.0 版本正式发布。截至目前,在不到一年半的时间, Flutter 已经在 GitHub 上已获得了 92.4K 的 Star 和 12.5K 的 Fork ,发展速度相当惊人。它的热度和关注度甚至赶上了老牌跨平台框架 React Native,React Native 目前在 GitHub 上有 87.2K Star 和 19.4K Fork,Star 数还少于 Flutter。
那 Flutter 作为一个新兴框架为什么会这么火呢?背后源于移动开发者们对于“一套代码,多端运行”的孜孜追求。
移动系统与终端设备的碎片化,让开发人员一直头痛于在不同平台上开发和维护同一个产品的成本问题:使用原生方式来开发 App,不仅要求分别针对 iOS 和 Android 平台,使用不同的语言实现同样的产品功能,还要对不同的终端设备和不同的操作系统进行功能适配,并承担由此带来的测试维护升级工作。
这无疑是非常大的负担,也无形中拖慢了产品的交付节奏。而对于互联网行业来说,慢一步可能就步步慢了。
事实上,目前业界比较成熟的跨平台技术都存在一定的缺陷,比如小程序(WebView)渲染耗时过长,白屏率会影响转化收益,能实现的功能非常受限;再比如 React Native 的性能不足、问题排除难、维护成本高等。
开发者们不得不用这些方案,但处处是坑的现状也让他们怨声满满,他们希望能有一个更好用的跨平台框架。这时,谷歌推出的 Flutter 给了大家一个不同的选择,讨论度自然一路上涨。
那除了用户有需求、谷歌给背书之外,在本身性能上,Flutter 有哪些优势呢?
其实,Flutter 一面世就以“UI 漂亮、像素级可控、性能流畅、可媲美原生性能”等特点吸引广大开发者的眼球,自渲染引擎甚至具备开发游戏的能力。
Flutter 的早期开发者 Eric Seidel 曾经在一个访谈中分享过当初为什么开发 Flutter,以及 Flutter 的一些设计原则和方向。
Eric Seidel 和 Flutter 早期的几位开发人员都是来自 Chrome 团队,他们在排版和渲染方面具有非常丰富的经验。但一直以来,他们都为浏览器的性能而感到沮丧,他们希望 Web 中的一部分能够拥有更加平滑的体验。
为此他们花了几周时间做了一个实验,不考虑 Web 的兼容方式,删除了大量为了兼容访问的代码和一些 Web 开发者不常用的功能, 删除到有不少 Web 元素的渲染已经不支持了,然后做了一个基准测试,得出结论是某些关注指标的速度快了 20 倍。在此基础上,团队投入了大量研究和开发,便有了现在的 Flutter 。
从开发之初到现在,Flutter 一直秉承着两个最重要的设计原则:
性能至上。内置布局和渲染引擎,使用 Skia 通过 GPU 做光栅化。选择 Dart 语言作为开发语言,在发布正式版本时使用 AOT 编译,不再需要通过解析器解释执行或者 JIT。并且支持 Tree Shaking 无用代码删除,减少发布包的体积。
效率至上。在开发阶段支持代码的 Hot Reload,实现秒级编译更新。重视开发工具链,从开发、调试、测试、性能分析都有完善的工具。内置 Runtime 实现真正的跨平台,一套代码可以同时生成 Android/iOS 应用,降低开发成本。
可以说,Flutter 在之前主流的跨平台方案外开辟了全新的思路,提供了一整套从底层渲染逻辑到上层开发语言的完整解决方案。
之前的主流方案,一种是使用原生内置的浏览器加载 HTML5 的 Hybrid 技术,采用此方案的主要有 Cordova、Ionic 和微信小程序;另一种是使用 JavaScript 开发,然后使用原生组件进行渲染,采用此方案的主要有 React Native、Weex 和快应用。相较之下,自带渲染引擎和原生组件的 Flutter,显然在性能和效率上有更大的优势。
正是因为这些革命性的特点,Flutter 获得了众多开发者和公司的青睐,国内就有阿里、字节跳动、美团等知名大厂,都在内部建设了自己的 Flutter 工程化体系。像其中的阿里,最开始只是在闲鱼试水,到现在淘宝特价版、盒马、优酷、飞猪等诸多业务都开始尝试使用 Flutter 了,也都取得了不错的效果。
字节跳动移动平台部 Flutter 架构师袁辉在接受 InfoQ 采访时就曾这么评价 Flutter:
引入 Flutter 之后,在公司的业务也创造了不少价值。主要体现在这几个方面:其一,Flutter 多端一致性上表现良好,能做到所见即所得,无需针对某一平台做额外适配工作;其二,热重载技术使得设计团队和工程团队可以非常快速地修改和调试 UI,设计师只需要关注一个平台实现,UI 验收效率明显提高,跨端开发可以提高工程师的人效(有团队初步估算人效大致提升了 1.8 倍);其三,性能流畅度提升,相较于 H5 版本首屏时间有较大提升,最后,产品商业化数据都有明显的收益,能直观地看到 Flutter 给公司带来的创收。
除了诸多优势外,作为一个新生技术,Flutter 还是有一些“欠缺”的地方,比如当前的生态还不够完善,相关的各种支持库、工具等都还比较欠缺;比如 Flutter 采用的是 Dart 语言,这是一门非常冷门的语言,用户基数非常低,进一步加大了 Flutter 的学习成本,再加上 JavaScript 在大前端领域的统治地位,这些都成了目前大多数开发者犹豫是否要跟进这个框架的最重要原因。
不过总的来说,Flutter 正处于欣欣向荣的发展态势中,本身切中了大前端开发者的痛点,背后谷歌的支持非常大,版本更新快,社区也非常活跃,可以说是当下最具潜力的跨平台技术了,跟进不亏。再者,未来一段时间,很明显会是多套跨平台技术并存的时代, 那作为开发者,了解掌握时下热门的跨平台框架,也有助于把握住更多的机会。
卖桃者说,明天见。
(编辑:夏天) 
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《卖桃者说》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • SamGo
    当初跟进Flutter是看中背后的谷歌,虽然Flutter还有各种问题,但各种方案都有不完美的,根据需求选择合适的。 🤓还要再看一遍极客时间的Flutter专栏,加强一些理解
    4
收起评论
显示
设置
留言
1
收藏
66
沉浸
阅读
分享
手机端
快捷键
回顶部