头图

哈喽,我是老刘

前段时间有个朋友加我微信找我帮忙做个项目
他是在校学生,有网络安全方面的课题,需要做一个系统
其中包括Android、iOS端、Web端和服务端
他研究了现在的各种技术栈,发现Flutter是一个比较合适的选择
于是找到我们帮他实现
系统整体来说相对比较简单
但是其中他咨询的一个问题,我觉得还是很有代表性的
就是使用Flutter同时实现Android、iOS、Web三个端是不是最优选择?
或者换个说法,如果App用Flutter开发,那么Web端是使用Flutter还是前端框架更好?

其实这个问题是没有标准答案的,要看项目的具体情况
那么以这个客户的项目来看,怎么选择更合适呢?

确认需求

首先仅是实现Android、iOS、Web三个端这点信息是不够的,还需要了解需求更具体的情况
和客户沟通后了解到的情况如下
1、虽然是同一个系统,但是App端和Web端的功能并不相同
App端包含二维码扫描,OCR识别等交易验证方面的功能
而Web端更多的是展示方面的工作
2、对于App和Web端都有的功能相同的页面,因为是在pc的浏览器内展示,因此客户提供的UI设计和App上是不一样的

没有只写一份代码的优势

基于这样的需求场景,我们能想象一下如果都使用Flutter来开发,会是什么样的场景
因为功能和UI都有较大的差异
即使我们使用Flutter开发,能够在App和Web端之间复用的东西也比较少
因此大概率我们会建立两个独立工程,分别用于App和Web
这样对后续版本的维护管理也更方便
也就是说即使都使用Flutter基本也无法享受到只写一份代码的优势
于是这个问题其实就变成了对一个独立的Web项目来说,选择Flutter还是前端框架

独立Web项目能否选Flutter?

虽然我做Flutter开发5年多了,也一直说Flutter很好用
但是仅对web开发来说,不得不承认目前前端的生态还是要比Flutter丰富的
那么是不是这种情况就应该无脑选前端框架了呢?
其实也不是
仔细和客户确认了UI的细节后
我发现Web端的功能和页面复杂度都不是很高
也就是说使用Flutter和前端框架开发,难度和成本其实相差不大
虽然我们最终选择了使用前端框架进行开发
但主要的原因是当时正好一个前端开发的同事有空
而我这边所有的Flutter开发人员都比较忙
如果当时的情况反过来
是有Flutter开发同学比较有空闲,那么肯定会选使用Flutter进行开发

这里面其实隐含了一个我想要表达的东西
目前Flutter的生态已经取得了非常大的进展
在面对一些不是特别复杂的独立Web端任务时
其实也是完全可以胜任的

Flutter更具优势的场景

如果说前面那种场景Flutter是次优选,或者说是平替
那么下面这种场景Flutter可能就是最优解了
这种场景大家也很容易想到,关键词就是“复用”

比如去年的一个项目
主要功能是Android和iOS的客户端
同时客户端的一部分功能也做了H5的网页版本,主要用于轻量级使用和引流
H5页面的功能和UI基本上与App端保持一致
这个项目我们选择了全部通过Flutter来完成
直接省掉了一个人力资源的投入,只在最后部署的时候让一个前端开发来部署的
当然,代码仓库的管理还是要进行一定的划分,我们当时有三个仓库
一个客户端仓库、一个Web端仓库和一个公共组件仓库
这样主要是为了管理方便

类似的还有一种场景
比如PC端和Web端有页面复用的,可以参考上面的逻辑来

好了,这个话题就先聊到这里吧
其实还有一些更复杂的场景,比如组件、模块级复用的场景
等后续碰到了合适的案例再和大家细聊
如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
盖90%开发场景的《Flutter开发手册》


程序员老刘
1 声望2 粉丝

客户端架构师,客户端团队负责人。一个月带领客户端团队从0基础迁移到Flutter 。目前团队已使用Flutter五年。