Flutter与React Native的技术使用后的一些感想

320 阅读5分钟

移动端跨平台的解决方案到现在无非有两种常用的方案,一种是基于WebView优化+h5,如:AppCan,另一种就是基于js桥接的React Native,还有至今正在燥起来的Flutter。

前任---H5的跨平台解决方案

这种方案不用多说,跨平台容易,适配性一致,但是性能一致性简直是灾难。我们不屑于使用这种方案,主要有两个原因:

  • 因为我所在的山西太原,IT环境比较恶劣,对技术的要求可以说是安贫乐道,这也和整个地区的技术人才有关,大家做项目对软件开发完后的性能不是很关注,包括甲方也一样,能用就挺好的了,都是面向领导编程。稍微有技术追求的人,肯定不会为此而开心

  • 开发普通企业级app的时候,使用h5开发的应用,那种渲染速度,还有点击反馈,你能明显感觉不敏感、很生硬,做过原生开发的人或者对比过这两种开发效果的人能get到这一点,我觉得是不能忍受的。

热恋中的 React Native

我所在的公司是太原本土做到100-200人左右的典型科技公司,项目多服务于政府,电信,能源国企类为主,需求N变,毫无预兆,开发时间短,很多的App项目其实都是真个项目订单中不重要的一环,公司对移动端开发都不是注重,种种的矛盾使整个移动端市场和人才特别紧张,面试的人技术水平一般,有的小公司项目做完就把移动端开发人员调岗或者劝退,薪资问题很多从北上广回来的人又都离开了太原

这样的局面导致很难招到靠谱的APP原生开发人员,但是对开发出的App性能与体验有要求,所以我最后还是决定使用React Native跨平台,当然,这也是分析了当下太原的整体IT环境,所做出的选择。至今也验证了我们做出的选择是对的。

总结下经验,大概有以下几点:

  • React-Native生态比较完整,而且有京东金融这种app做背书,使用它开发还是心里有底的。常用功能得库在github上都可以找到,这里推荐一个脚手架 bettem-rn-cli
  • RN编写代码使用的ES6+React,可以招到React的前端人员就可以上手编写代码。对于这些开发人员照着官方文档里环境的搭建,折腾不超过两天,就可以将应用跑起来。
  • 多应用整合,安装包大小大大缩小。这点受益于字体图标,jsBundle的使用,我们将多个应用集成到同一个应用上,每个单独的应用创建一个jsbundle, 大小也就200K左右。这样5个应用集成后Android安装包大小27M左右,这是带给我们欣喜的地方
  • UI使用Ant-Design RN后某些界面做到了统一,而且样式可自由定制化,开发效率提高不少,最重要的接近原生体验
  • 网上所说的百度和Airbnb弃用React-Native,完全是因为他们自身的原因,百度这种大厂因为开源协议肯定受制于人,Airbnb因为自身产品性,使用这种技术确实是一种拖累。我觉得RN的使用市场就是普通项目型的应用,完全胜任

心生爱意于 Flutter

使用React-Native目前看起来对我们确实比较完美,但是毕竟RN有着很多版本差异导致的费时费力的适配工作需要做,有些需要原生解决,对于现在全是前端的开发人员来说有些吃力。后来开始关注Flutter,了解到咸鱼和美团都在App里或多或少的尝试使用Flutter,也看了他们的技术分享。

最近,动手搭建了一个Flutter工程,跑起来看了看,感觉编译速度上比React-Native快不少,当然也没什么业务代码支撑测试。流畅度可以说是很原生了。

Flutter 直接在两个平台上重写了各自的UIKit,对接到平台底层,减少UI层的多层转换,UI性能可以比肩原生,这个优势在滑动和播放动画时尤为明显。

Flutter使用了全新的语言Dart,Dart语言同时支持AOT和JIT运行方式,JIT模式下有一个我们熟悉的开发利器“热刷新”(Hot Reload),Dart代码保存后可以立即更新到正在运行的设备上,不需要重新编译App,甚至不需要重启App,立即就可以看到更新后的样式。这与React-Native上的开发体验一致。

其实Flutter说白了还是UI框架,只是实现方式和体验优化上是目前来说最好的方案,未来几年应该是企业应用跨平台的主流,但是三方的插件目前来看不算是很丰富,对于我们这种快速开发的团队,不是很适合。我个人目前还是很倾向于Flutter的,在团队里推荐研究,成熟的时候会立马拥抱Flutter