谁告诉你 Flutter 会干掉原生开发?

以下图所示,今天恰好收到一个知乎问题,而刚恰好这个视频我也在抖音上看到过,播放量还不低,原本是“一笑而过”可是既然这么“有缘份”,那就关于 “Flutter 会干掉原生开发?” 这个问题再聊聊个人见解。react

我在 2017 开始对 flutter 产生兴趣,至今已经写了 20 几篇关于 flutter 文章,github 的几个 flutter 开源项目 star 数大概在 14k 左右,现在 flutter 也是个人本质工做之一,因此我想说这个观点很偏面很偏激也很博眼球git

在说这个问题以前,先说下 flutter 是什么。

flutter 其实就是一套谷歌开源的跨平台 UI 开发框架,支持 Android 和 iOS ,而且目前开始支持 Web 和 MacOS,将来还会继续支持 Win和 Linux 平台的一套 UI 框架。github

和之前的跨平台开发不一样的是:它的性能更好,更接近原生而且跨平台体验更优秀,由于它的跨平台实现机制更像是游戏引擎,因此在积累到 2019 年后迅猛上位,到今天 flutter 在 github 的 star 已经超过了前辈 react-native,固然, issue 也超越了 react-native。web

因此经过上述能够总结:flutter 确实很不错,可是, flutter 的定位只是跨平台 UI 框架,而且 flutter 目前的 issue 感人。编程

关于 Flutter “干掉原生开发的问题”

这个问题其实追溯到 react-native 、weex 等跨平台框架出现的时候,都会有原生开发“要凉”的口号盛行,可是事实上 react-native 、weex 和 flutter 都只是 UI 框架,它解决的实际上是跨平台上的 UI 实现,让界面布局或者实现的业务逻辑能够在多端统一。react-native

可是它也仅仅只是 UI 框架,好比 react-native 自己就是依赖于原生控件,而 flutter 的 webview 、mapview 也都须要依赖原生开发来支撑。weex

接着说除了 UI 框架以外,好比蓝牙、数据存储、传感器、应用之间的通讯交互、多进程等等一大堆支持其实都属于原平生台,这些在 flutter 上都须要对应平台的开发支持,以后再封装到 flutter 插件中。框架

有的人可能以为这些都有官方和第三方提供,可是首先 flutter 的插件社区现在还比较年轻,固然项目小的时候可能无所谓,可是只要项目稍微比较大的,这些确定远远不够,官方提供的永远赶不上 PM 或者 Boss 们的奇思妙想布局

若是按照截图上所说,他一我的能作 iOS、Android 和 Flutter 全部的工做,能作编程界的“叶问”,那我无话可说。。。性能

再说就flutter 的 issue ,天见尤怜,加上 pr 还有 8000+ 的 issue 没有 Closed ,心疼 flutter 官方一秒钟。跨平台框架的问题一直都不可能少,由于涉及的平台多了,问题天然也就多了,而不少问题其实都是和原有的平台有关,没有对应平台的开发人员不少时候是搞不清问题所在。

混合开发也是一个考虑的因素,由于不少企业并非从零开始,通常都是在原有项目的基础上作混合开发,对某些业务进行改形成 flutter 来尝试新技术;同时大厂也不会把鸡蛋放在一个笼子里,因此不少时候对于大厂而言更多会是混合开发的模式。

最后就是打包和分发,“打包失败和审核不过”是最常出现问题的阶段,特别是 iOS 平台的打包和审核,这些每每也都须要有对应平台经验的人来处理。

因此 flutter 的定位,甚至跨平台开发的定位,都不是干掉原生,而是在原生开发上拓展技能和能力。能干掉平台的只有平台!

关于 Flutter 真正的定位

最后聊聊 flutter 的定位,flutter 做为跨平台 UI 框架,很众多跨平台框架同样,它是和原生相辅相成的存在,我在作技术分享和文章中不止一次表达过这个观点,跨平台解决的问题是:

一、开发成本

直接学 Java/KotlinObject-C/SwiftJavaScript/CSS 去写各平台的代码能够吗?

固然能够,这样的性能确定最有保证,可是跨平台的主要优点在于代码逻辑的复用,减小各平台同一逻辑,因人而异的开发成本。对于企业而言,一套业务逻辑能够在多处使用是最理想也是最保险的。

二、学习机会

通常状况下,各平台开发者容易局限在本身的领域开发,而做为应用开发者,跨平台是接触另外一平台或领域的过渡机会。

三、团队结构

通常而言作跨平台的团队仍是会有 Android 和 iOS 的原生开发,甚至于在大中型项目中人数都不会变少,可是用跨平台会让全部人都参与都一个开发进度中,而不是 iOS 和 Android 各作各的,最后再扯谁的实现有问题。

每次出现新的技术框架都有猛吹的,也有抗拒的,但愿你们都能保持客观的态度面对改变~

资源推荐

开源 Flutter 完整项目:github.com/CarGuo/GSYG…

开源 Flutter 多案例学习型项目: github.com/CarGuo/GSYF…

开源 Fluttre 实战电子书项目:github.com/CarGuo/GSYF…

相关文章
相关标签/搜索