
在使用 React Native 五年之后,Shopify 移动团队分享了大量的心得体会,重点介绍了什么有效,什么无效,以及未来的发展方向。
来自 Spotify 的 Mustafa Ali 说,总的来说,Shopify 工程师使用 React Native 的经验揭示了它的几个亮点。其中一个最令人鼓舞的发现是,React Native 应用可以满足严格的性能要求。不过,正如 Ali 指出的那样,这其中并没有什么隐藏的魔法,成功与否取决于能否有效地运用合适的模式。
在 Shopify 的应用中,我们实现了低于 500ms(P75)的屏幕加载 [...] 。就像原生应用一样,必须运用好的模式和技术来消除性能瓶颈。
React Native 有一个可以显著加速开发的功能是热重载,它将预览用户界面变化的时间从几分钟缩短到了几乎是即时反馈。
这不仅浪费时间,还会破坏开发工作流程。React Native 的热重载功能彻底解决了这个问题。
从积极的一面来看,Ali 认为,使用 React Native 还能带来另一大优势,即提供灵活性和健壮性,并通过在 Web 和移动端之间共享代码来提高效率。
能够在多个平台上进行开发的开发人员非常有价值。这让我们能够更快地交付产品,他们能够从一种技术中汲取好的想法,并以新颖的方式将它们应用到另一种技术中去。
到目前为止,Ali 的观点与人们普遍认可的 React Native 的优点是一致的。不过,他也分享了一些不那么显而易见的见解,比如 React Native 与原生代码融合的关键作用。对于利用设备硬件且有内存限制(如首页和锁屏小部件)的特性以及长时间运行的作业来说,这一点尤为重要。
我们发现,使用 RN ,大多数功能只需构建一次,就可以在最适合的地方使用,这样可以节省大量的时间。这也是为什么在团队中有 Native 专家至关重要的原因。
Hacker News 上有几位评论者也赞同这一点,他们指出,人们对 React Native 应用的一个普遍误解是,它能让 Web 开发人员轻松地创建移动应用。其实,更准确的观点是:“React Native 是移动开发人员避免重复编写相同应用的工具”,而不是他们跳过原生学习的捷径。
Ali 指出,React Native 也有一些不容忽视的缺点。首先,与 Xcode 和 Android Studio 中的工具相比,React Native 的调试往往更加困难,而且不够精简。但更令人担忧的是,每次 React Native 更新往往都会带来大量的工作,有时甚至需要重组代码库。
为了缓解这一问题,我们让一个开发小组轮流处理,而团队的其他成员则专注于功能开发。
基于 React Native 的项目还有一个弱点是依赖第三方库。虽然这些库应用广泛,但它们也带来了持续维护的负担和供应链攻击的风险。
虽然到目前为止,Shopify 在 React Native 使用方面取得了丰硕的成果,但在 Hacker News 上,有一些评论者指出,在某些方面,他们的应用给人的感觉是质量不高。一位评论者提到,React Native “很好用,尤其是在迭代的时候,但它让最后 20% 的工作变得比原来难很多”(https://news.ycombinator.com/item?id=42729069)。其他人则强调了 Flutter 在工具和性能方面的优势。不过,他们也指出, Flutter 应用 “看起来不太对劲”,因为它们依赖于非原生组件。
Ali 表示,Shopify 未来会更多地使用 React Native 。他们计划贡献更多代码,赞助开源项目,并采取其他措施扩大 React Native 对各组织的支持。要深入了解全部细节,请查看原文。
声明:本文为 InfoQ 翻译,未经许可禁止转载。
原文链接:https://www.infoq.com/news/2025/04/shopify-five-years-react-native/
评论