weex、RN还是Flutter?

探讨Weex、RN与Flutter的适用场景与选择策略,分析跨平台开发在不同业务形态下的优劣,以及阿里在跨端技术上的实践与思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

weex、RN还是Flutter?聊聊阿里跨平台开发框架选型思路

APP混合式开发、跨平台、跨终端开发流行的当下,如何选择一种适合自己的跨端开发技术呢?

多平台的开发增加的额外成本到底是多少? 在整个研发生命周期中的占比是多少? 跨平台的开发框架能多大程度上解决这个问题?
这个问题回答清楚了,我们才能明确适合自己的跨平台开发框架应该具备哪些特征,这个跨平台框架在一个 App 应用中的使用范围是多大。
从应用的 Life Cycle 来看,研发阶段只是其中一个阶段,是否具有长久的可维护性、可运维性也是需要重点考虑的问题。
再到研发阶段本身,整个研发是从前端到后端 End-to-End 的,跨平台更多地是集中在大前端领域内的话题,如果在当下的业务形态里,前台展现是高度产品化、比较稳定或者对于性能以及交互的要求极度苛刻的,那么 Cross-Platform First 未必是一个理想的选择。

跨端技术发展历史:

从早期比较流行的 Hybrid App,到后来的 React Native、Weex,再到现在比较火爆的小程序和Flutter,可以看到跨平台的发展趋势是框架变得越来越重。
他们本质上都是在研发成本、灵活性、性能体验三者间找一个平衡点,只是大家切入的点不太一样。
是不是一定越重、越新的框架越好?答案是不一定。

  1. 比如思维导图工具、编辑交互比较重的那些工具就不太适合用跨平台开发技术做。

  2. 如果是业务线比较类似的,交互感比较弱的,侧重于做内容的,图片和文字信息的展示的应用,比如新媒体新闻、携程APP里面那些业务、豆瓣等,这些适合用跨端技术来做。

对于第2点,一方面是多平台开发工作在整个研发成本里的占比不高,ROI 未必高;另一方面是 Cross-Platform First 是以牺牲平台特性为代价来达到跨平台的一致性(本质上跨平台研发框架也基本无法做到多平台上表现得完全一致性)。在达到一致性表现的过程中,工程上的填坑成本可能更高。
反过来讲,如果当前的业务情况下,前台的呈现比较不稳定并且整个前台开发占比较高,那么应用跨平台框架的收益就比较高了,在阿里比较典型的例子就是 Weex 在大促会场上的应用。

选择判断

假设说现在你要做一个新的 App,可能整个开发团队是多前端、少客户端的,那么我可能会比较建议大家多考虑 Hybrid 的模式;如果对性能要求比较高,就可以考虑用用 Weex 或者 React Native;反过来,如果是客户端同学比较多,那么考虑下 Flutter 未尝不可。

weex的诞生背景

从 2015 年开始做 Weex,2016
年大规模应用。当时我们大促会场页面从研发效率以及发布的灵活性考虑,统一使用的是
H5,但在当时,性能和体验都有些问题。同样,当时手淘上众多的导购业务因为很难接受 H5 的性能与体验,强烈要求使用 Native
做页面开发,这样就又带来了另外一个问题,即 App 的包大小的问题。Weex 在这个背景下诞生,在尽量保留 H5
研发效率以及部署灵活性的前提下,尽量提升页面的性能体验。

DinamicX 的发展背景

从 2017 年开始做 DinamicX,2018 年大规模应用。这个框架的诞生就要顺着刚才的历史接着往下讲。Weex 解决了原先使用 H5 的业务的性能诉求,但是我们发现 Weex 在一些产品化程度很高的业务域内,依然不能满足性能要求,比如说首页这类一级 Tab 页,所以这种业务基本都还是保留了 Native 的开发模式。
虽然 Native 的开发模式被保留了下来,但是不意味着这些业务对于开发的平台一致性、研发效率、部署效率没有要求。为了解决这些问题,DinamicX 使用了类似于 Android layout 的声明式布局。相较于 Weex,DinamicX 并没有引入脚本引擎的能力,通过牺牲部分灵活性,来达到性能的极致。通过这样的方式,能够做到在性能基本和 Native 开发持平的情况下,比较灵活地调整页面布局,再通过和我们内部的新奥创研发平台的结合,实现页面布局与业务逻辑的分离。通过这样的方式,DinamicX 这个框架基本解决了我们在基础产品业务域内的研发效率以及性能体验的平衡问题。

小程序框架

小程序框架,现在我们更多地是使用在了商家应用场景上,核心是为了解决我们在集团多个 App 之间业务快速部署以及外部商家开发的页面快速入驻手淘并且能够得到有效管控的问题。小程序最近比较热,这个点上就不展开了。

Flutter

至于 Flutter,我们内部使用比较深入的是闲鱼的同学。对于跨平台领域的解决方案,我不太秉持只有一个正确答案的想法,对于终极解决方案这个结论我还是比较存疑的,但有一个需要探索的重要方向是可以确定的:决定一个跨平台解决方案的成败有两个重要因素,一个是技术产品化程度,或者说是工程化水平;另外一个是整个开发者生态的构建。如果从这两个因素来看的话,可以明确都还有一段很长的路要走。手淘今年也成立了专门的团队在研究 Flutter 的应用,我们可以拭目以待。

rnflutter都是目前非常流行的移动应用开发框架。 React Native(RN)是Facebook推出的一种开源框架,它运用了Facebook自家的React框架,能够基于JavaScript创建原生的移动应用。RN的优势在于它可以使用一套代码同时在iOS和Android平台上运行,大大减少了开发者的工作量。此外,RN还提供了丰富的组件库和强大的社区支持,使开发者能够快速搭建漂亮、高效的移动应用。 相较之下,Flutter是Google推出的开源框架,它使用Dart语言进行开发。Flutter通过自定义的渲染引擎绘制UI,可以创建高性能且美观的跨平台移动应用。Flutter具有热重载功能,使开发过程更加迅速和便捷。同时,Flutter提供了丰富的组件库和通用的API,使开发者能够轻松创建各种复杂的用户界面。 然而,RNFlutter也存在一些不同之处。RN使用JavaScript进行开发,而Flutter使用Dart语言,这意味着开发者需要学习不同的编程语言。另外,RN采用的是原生组件的渲染方式,而Flutter则是通过自定义渲染引擎进行绘制。这一差异导致Flutter在性能和用户体验方面更具优势,但对于复杂界面和特定平台功能的需求,RN可能更加灵活。 综上所述,RNFlutter都是优秀的移动应用开发框架,具有各自的优点和适用场景。开发者可以根据项目需求、个人技能和团队资源来选择适合的框架。无论选择哪个,都能够高效地开发出高质量的移动应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值