文章插图
一年前我们打算做一个跨端产品,希望一套代码,同时发布五端(Android/IOS/windows/mac/Web),以减少开发成本及测试成本和维护成本,基于此,对市面上一些技术栈进行对比研究 。
首先确定几个选型的标准:
- 最好具有跨平台能力,能够一套代码支持多端发布
- 性能较高,各端均有很好的流畅度
- 兼容性较好,各端不会有较大差异,从而导致各端陷阱
- 开发效率越高越好
- 比较成熟,有完善工具链,社区
原生开发
- 使用语言:Kotlin/JAVA/Swift/OC
- 优势: 官方原生支持,功能强大健全,性能和体验是最好的 组件丰富,社区强大
- 劣势: Android和IOS需要分别开发,开发人力、测试人力翻倍,bug数量翻倍 容易出现ios和Android表现不一致的情况
- 社区:官方社区,比较活跃
React
- 使用语言:js/原生扩展
- 优势: 可以基于js开发,方便复用前端开发人员及部分web代码 web兼容性和性能都较好,开发人员比较好找 react作为响应式框架,代码结构清晰,开发效率较高 可以使用ReactNative实现跨平台
- 劣势: 使用js作为语言,性能不及原生,js和原生通信交互,进一步损失性能 由于UI表现使用原生模拟web/css,有一定的局限性和兼容性,从而在实现真正跨平台时,会经常碰到兼容性及功能局限性
- 社区:Facebook维护,社区较为活跃
Weex
- 使用语言:js/vue/原生扩展
- 优势: 同react,可以结合vue框架书写 对于熟悉vue的同学能较快入门
- 劣势: 同react,最初由阿里巴巴开发,后来转交给Apache基金会 测试bug较多,后续缺乏维护动力
- 社区:Apache基金会
UniApp
- 使用语言:js+vue+微信小程序组件
- 优势: 使用js+vue,能让前端无需学习,就能快速开发 一套代码,能同时支持APP/H5/小程序,是较为全面的跨平台框架 兼任小程序,能同时发布到多个小程序平台
- 劣势: 使用js+小程序多进程架构,在ui和逻辑通信过程中,性能大打折扣,对实现复杂界面及极致效果时会有点力不从心 App实现部分不开源(最新部分开源),遇到问题只能等官方解决 兼容性较差,大部分时间不是在开发,而是在优化性能及调试各端兼容性问题
- 社区:DCloud
Flutter
- 使用语言:dart/第三方扩展
- 优势: google出品,目前可以同时跨Android/IOS/Web/Windows/Mac desktop版本在开发中(计划2020年发布),同时也是google下一代操作系统Fuchsia的官方UI方案 flutter框架性能优异,兼容性小,类似react的组件化响应式开发框架,开发效率较高 官方提供移动端大量第三方组件,能极快的提高UI组装效率,关键还开源,哪里不好改哪里,开发不怕遇到天花板 工具链强大,热更新秒看结果,极大的提高开发效率 dart强类型语言,相对js在代码提示,代码重构上有较大方便性,在开发过程中就能避免很多bug产生
- 劣势: UI组织方式比较另类(代码嵌套方式,习惯了就好) 不支持小程序,web实现不是最优方案,在内存和性能上会比传统开发有较多消耗 插件还需完善,第三方插件很难做到跨所有平台(大部分可以跨移动端)
- 社区:google pub.dev第三方社区,比较活跃
最终我们选择Flutter作为技术栈,现在回顾一下,依然觉得Flutter是最好的跨平台框架,使用的时候真是各种爽,无论开发效率,性能,跨平台上,都有非常不错表现,随着Flutter的日趋完善,我相信还会越来越好 。
推荐阅读
- 九龙茶传说故事,九龙大白茶的栽培技术要点
- 江西茶叶绿色崛起,江西省经作站赴遂川开展茶叶生产技术指导活动
- 空间站|天舟三号从空间站后端绕前端对接:将迎接天舟四号、神舟十四号载人飞船
- 技术开发合同的审核要点
- Civi|超15万人预约!小米Civi 1S马上发:首发4D光追焕颜美妆技术
- 做试管婴儿取卵过程
- SimCLR框架的理解和代码实现以及代码讲解
- 最强的开发者技术路线图已经更新到 2020 GitHub 超 118k还有中文
- 30名工程师,历时1300天打造,又一“国产”AI框架开源了
- 以色列公司StoreDot开发全新无人机技术,承诺5分钟即可完成充电