从19年过去的两年时间,Flutter在Google带领各大厂商的引领下,飞速发展。flutter sdk官方也在快速的迭代升级,从1.0.0到现在的2.5.0,从底层引擎到适配层再到框架层都有比较大的更新,忒别是在混合开发模式的支持上不断的优化,我们项目也是从1.0.0,到1.12.13,再到2.0.0,尽力过几次惨痛的升级,也感受到了Flutter官方对于开发者的友好程度。可见google官方对flutter的支持程度。
跨平台方案分析亲身体验从最开始的Cordov/AppCan,到RN/Weex,再到现在的Flutter。跨平台开发始终是任意年代不可逃避的话题,但是之前的技术原理无非是基于两种:
混合开发的web容器时代
为了解决原生开发的高成本、低效率,出现了Hybrid混合开发
原生中嵌入依托于浏览器的WebView
Web浏览器中可以实现的需求在WebView中基本都可以实现
但是Web最大的问题是,它的性能和体验与原生开发存在肉眼可感知的差异
因此并不适用于对性能和用户体验要求较高的场景
以RN和Weex为代表的跨平台开发
将H5标签渲染层原生控件用户体验更接近于原生了由于进行了功能裁剪,所以RN对业务的支持能力还不到浏览器的5%因此仅适用于中低复杂度的低交互类页面。面对稍微复杂一点儿的交互和动画需求,都需要通过调用原生代码去扩展才能实现 Flutter优势Flutter另辟蹊径,为了屏蔽上面两种跨平台开发方案的缺陷,开启了自绘引擎时代,它的主要优点:
UI渲染性能高在生产环境下,Flutter 将代码编译成机器码执行,并充分利用 GPU 的图形加速能力,因此使用 Flutter 开发的移动应用即使在低配手机上也能实现每秒 60 帧的 UI 渲染速度。
稳定Flutter UI由于自绘UI,从而避免了平台层面的UI和系统升级导致的各种兼容问题。但是作为跨平台开发技术不可避免的需要去维护底层适配层和各种插件实现与原始平台的通信,这是所有跨平台的通病。
高效对开发者来说,使用 Flutter 开发应用十分高效。Flutter 广受好评的 Hot Reload (热重载) 功能可以在 1 秒内实现代码到 UI 的更新,使得开发 *** 作周期被大幅缩短。
开源也正是由于开源,所以在全球开发者的疯狂支持下,这几年flutter飞速发展,越来越趋于完善,相信以后再windows,mac,linux等各个平台也能大放光彩。真正做到一套代码多端部署。
社区完善在中国,Flutter 的开发者社区非常活跃。社区贡献了大量高质量的技术文章,特别是以闲鱼,美团,淘宝为首的各大厂商技术方案的支持等,遇到大部分问题都能在网上找到解决方案,作为一个跨平台技术的一个新秀来说,这已经是不得了了。
总结下面来一个简单的比较
框架代表 | 技术类型 | UI渲染方式 | **性能 ** | 开发效率 |
---|---|---|---|---|
Cordova,AppCan | H5+原生 | WebView渲染 | 一般 | |
RN、Weex | js+原生渲染 | 原生控件渲染 | 高 | 中 |
Flutter | 自绘UI+原生 | 调用系统API渲染 | 高 | 高(AOT,JIT) |
不论是哪一代的开发技术,解决的问题无非就是那么几个:性能,开发效率,热更新。前两者flutter已经接近完美解决了,至于热更新相信随着后面不断的更新迭代,会有越来越优秀的解决方案。
可能很多人会认为flutter的最大弊端在于dart,但是对于一个跨平台的方案来说一种语言应该不至于阻碍它的发展,至少flutter选择dart这门语言肯定也是由它的优势所在,最看的见得优势就是JIT,即时编译极大的提高了开发效率。当然还有各种优势与弊端网上一搜一大把,这里就是仁者见仁智者见智了吧。
我想信flutter这种跨平台开发技术应该是就是未来,至于是不是flutter最终称王不得说,可能后面也会有更好的开发框架,但是这种自绘应该就是趋势。
以上是我实际开发经验的总结心得,也不一定是完全正确的,让我们拭目以待吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)