写点什么

2020 年为什么选择 Flutter?

2020 年 2 月 20 日

2020年为什么选择Flutter?

Flutter 是什么?

Flutter 是来自谷歌的一个出色的跨平台框架,可用来为移动、桌面和 Web 平台构建应用程序。它于 2018 年 12 月正式发布,仅用了不到一年的时间就在 GitHub 和 StackOverflow 上获得了比 React Native 更高的知名度。所有这些热度背后都是有一个很好的理由来支撑的,这篇文章就会具体解释这个原因。


为什么又要出一个框架?

当我向软件产业的从业者介绍 Flutter 时,他们通常会问我的第一个问题是“为什么有人会用它,而不是 React Native 或者其他 SDK 呢?”答案很简单:它在所有方面都比其他任何竞争者都更加出色。当然人们想要听更详细的解释,这是很自然的事情。


除非有人找出了更好的方法,否则我们往往看不到自己手头工具和资源的局限;即便有人拿出了更好的选择,我们自己的偏见和先入为主的观念也可能让我们难以摆脱“旧路子”,很难去拥抱更强大、更灵活的事物。软件这个领域中也是这样的。比如说,只用过 PHP 的人们会争辩说 PHP 是如此伟大的语言,列出一二三四条理由,可他们并不了解除了简单的 Web 服务器以外,还存在着庞大的由不同设备和系统组成的生态系统。并非所有事物都是一个网站,所以我强烈支持业界使用专门为应用程序开发而打造的工具集,而不是从前端 Web 生态系统移植而来的工具。


Flutter 的优势

与其他选项相比,Flutter 有着一些明显的优势。这些优势融入了基础语言和 SDK 的设计中,以解决其他技术的常见问题和缺陷。想要知道你为什么要为下一个项目选择 Flutter?或者当你担任某种领导角色时,为什么应该允许开发人员使用它?下面简单分析并列出几条理由:


1.Dart 语言

很多语言都在标准化的泥潭中苦苦挣扎,搞出来很多不同的版本,各个版本的语言特性也各自不同(许多开发人员都分不清它们之间的区别);相比之下,Dart 语言从一开始就被设计为构建客户端应用程序的绝佳工具,并已针对 UI 开发工作做了调整和优化。这里没有互相竞争的标准,不会胡乱拼接一些本应是行业标准的语言特性,没有奇怪的语言怪癖或几十种互相之间完全不兼容的设计模式,也不需要额外堆砌一大帮本应是标准特性的功能(Redux 这个那个?)。


Dart 有着干净且极为强大的语法,促进且鼓励了强大的应用程序架构和设计,更不用说团队一致性、标准化、长寿命、易于维护,以及许多现有的跨平台工具往往缺失的特性。它与其他流行语言(例如 C#、Java 和 TypeScript)相似,这意味着有相关经验的开发人员很容易快速上手并开始使用 Dart。


2. 开发人员的广泛采用

在短短的一年时间里,Flutter 在 GitHub 和 StackOverflow 上都取得了比 React Native(之前最流行的框架)更高的流行度。对你的应用程序来说,这意味着有更多的资源可供学习,可以找到更多熟练的开发人员来开发你的应用,并且技术本身的迭代速度更快(也就是说这项技术将更快地成长和成熟,不会像 React Native 那样的技术一样多年以来基本上保持不变)。



Stack Overflow Trends:Flutter 与 React Native 的对比


在上面这张 Stack Overflow 趋势图中,我们可以看到 Flutter 是怎样脱颖而出并取得领先地位的。这样的趋势很可能会持续下去,这意味着迟早我们会看到,愿意并能够使用其他技术来支持跨平台应用程序的开发人员逐渐变得愈加稀少了。这样的变化往往需要很长时间(许多年),但在软件开发社区中是屡次出现的情况。


3. 它特别快

Flutter 应用程序可编译为原生二进制文件,这些文件依赖于 C/C++ 内置的图形和渲染引擎,因此可生成非常快速且性能出众的应用程序。Flutter 应用程序能够在大多数设备上实现稳定的 60fps 输出,并在支持高刷新率的设备上实现令人难以置信的 120fps 帧率。许多开发人员已经注意到,Flutter 的性能表现与其他跨平台框架相比有了极大的提升,这也是移动应用开发人员迅速而广泛地采用这一技术的一项驱动力。确实,在性能表现和流畅的渲染方面,真正的原生构建应用是很难被击败的;但在跨平台框架领域,Flutter 在这些指标的竞争中具有明显的优势。


4. 它相对易学

虽然可以说并不存在哪种真正的生产级语言或工具包是真的易于学习的,但是有的语言具有清晰的文档和适用于大量用例的标准设计模式,有的语言只有参差不齐的文档,用迥异的途径来实现本该非常简单明了的任务,这些选择之间的学习难易度差异是非常大的。


除了性能表现之外,Flutter 之所以获得如此广泛的使用率,另一大因素就是它提供的出色文档和可供参考的大批高质量示例。对于有兴趣学习新的框架、工具包或语言的开发人员来说,这一切都让 Flutter 与众不同。对于经验丰富的程序员而言这一点尤其重要,因为他们更有可能发现语言或工具包本身的设计问题。有着几十年编程经验的老手在学习某些技术文档不够完善,或缺乏基本任务演示的技术时,会很快感到沮丧头痛。Flutter 因其清晰的文档资料以及由新手和专家组成的支持社区而倍受赞誉,社区成员经常渴望分享他们的经验,并提供设计出色、开发模式出众的可靠实践示例,为他人带去福音。一般来说,易学易用,面向大众的技术往往没有那么重的精英主义氛围,所以对新人也更加友好。


5. 它的设计精良

Flutter 是基于出色的语言(Dart)和快速的高性能渲染引擎(Skia)从头开始设计出来的。由于选择了这样的设计路线,Flutter 就用不着花费多年时间来重走别人走过的那些坑,并且从设计之初就做出了很多优秀的决策。


这样的路线诞生了一个高水平的框架,能鼓励不同技能水平的开发人员基于良好的设计模式和最佳实践来构建应用,而不会因为标准冲突,或糟糕的语言实践带来的内部技术债(例如糟糕的 JavaScript,大多数开发人员都会认为这是一场噩梦)而头痛不已。。拥有多年经验,能熟练跨各种设备构建应用程序的开发人员开始上手 Flutter 几分钟时间,就能意识到 Flutter 带来的明显优势;新手也不太容易陷入困境,因为互联网上有很多很棒的示例可以用来学习最佳实践。


结论

Flutter 是完全从新设计的,使开发人员能够在够短的时间内创建出高性能的应用程序,它避免了许多甚至难以用语言表达的问题,并提供了一个出色的开发平台,值得人们的大力赞赏。体验是很难用语言来表达的,但是我希望本文能为你提供一些见解,让你了解为什么有经验的开发人员会选择 Flutter 来轻松构建未来的项目。


可以关注我来获取很多 Flutter 示例,这些示例演示了如何构建动画、部署到桌面或 Web 目标,以及如何将其他一些有用的东西很好地融入现实应用开发场景中。


感谢你的阅读并祝你下一个项目顺利!


英文原文

Why Choose Flutter In 2020?


2020 年 2 月 20 日 15:565456
用户头像
小智 前 InfoQ 主编

发布了 399 篇内容, 共 316.6 次阅读, 收获喜欢 1757 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第 8 周作业

netspecial

极客大学架构师训练营

腾讯强推Redis成长手册!原理+应用+集群+拓展+源码五飞

小Q

Java redis 学习 架构 面试

【可下载】2020年底收官!为大家整理了物联网行业全面研究报告、行业洞察、白皮书……

IoT云工坊

人工智能 大数据 5G 物联网 智能家居

第四周作业

Jack

第八周课后练习

knight

你以为只是简单的排序?(一)

书旅

golang 数据结构与算法

家谱链亮相高交会,点亮“区块链+文化”融合发展之路

WX13823153201

家谱链亮相高交会

在线IDE开发入门之从零实现一个在线代码编辑器

徐小夕

Java ide H5 H5制作 代码编辑器

架构师训练营第 8 周学习总结

netspecial

极客大学架构师训练营

第八周总结

alpha

极客大学架构师训练营

家谱链亮相高交会,点亮“区块链+文化”融合发展之路

13530558032

我用 Python 找出了删除我微信的所有人并将他们自动化删除了

Python小二

Python 微信

架构师训练营 - 第四周课后练习

joshuamai

JVM真香系列:图解垃圾回收器

田维常

JVM 垃圾回收

面试官最常用小心思:说说你的项目并发量多大?负载均衡怎么做?

小Q

Java Linux 学习 面试 并发

作业-第4周总结

arcyao

极客大学 - 架构师培训 -ch3 作业

bing5tui3

极客大学架构师训练营

作业-第4周

arcyao

极客大学架构师训练营第一期第八周总结

睡不着摇一摇

架构师一期

架构师训练营第 1 期 - 第八周总结

Todd-Lee

极客大学架构师训练营

Flutter 开发从 0 到 1(二)框架与网络

吴小龙同学

flutter ios android 跨平台

基于f2从零实现移动端可视化编辑器

徐小夕

Java H5 数据可视化 h5编辑器 H5制作

python+requests进行get、post方法接口测试

测试人生路

Python 接口测试

《Web应用安全权威指南》.pdf

田维常

Flutter 开发从 0 到 1(一)需求与准备

吴小龙同学

flutter ios android 跨平台

架构师训练营 - 第四周学习总结

joshuamai

C++的智能指针你了解吗?

良知犹存

c++

【JAVA】TreeSet, LinkedHashSet和HashSet差异对比

莫问

第八章作业

alpha

极客大学架构师训练营

如何正确的关闭线程池

Rayjun

Java 线程池

目标检测-darknet 之模型初始化

Dreamer

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

2020年为什么选择Flutter?-InfoQ