04-何时使用React Native
13.3 何时使用React Native
并不是每个开发人员或团队都需要React Native。让我们想象几个可能会遇到的场景,看看React Native是否是应该考虑的东西。
- 独立开发者——如果你第一次学习React或者只是将它用于辅助项目,学习React Native可能是因为乐趣,或者是因为从事移动项目开发。如果没有深厚的原生开发经验但想要轻松地使用它或拥有更直接的应用程序,那么React Native也是个不错的考虑对象。如果已经了解React,那么利用一些熟悉的概念来使用React Native进行移动开发是有意义的。
- 小型跨职能团队——小型创业公司通常处于这样的位置:工程师将在广泛的技术栈中工作,从服务器到客户端应用程序(Web、移动或其他)。这种情况下,React Native有时可以让那些组织中身兼多职的工程师在没有丰富移动开发经验的情况下进行移动应用开发并让他们的React技术能力得以延续。这也适用于想要在应用或项目间轻松调动工程师的大型组织。
- 具有很少或者中等原生开发经验的团队——如果开发者或团队只有很少或中等移动开发经验,但熟悉React和JavaScript,那么React Native可以更容易地将产品快速地整合起来。经验无可替代,但无须全部使用Swift(iOS)或Java(Android)可能会节省时间。
- 拥有深厚的原生开发经验的团队——有些团队之所以选择React Native,并不是因为它在某些方面降低了移动开发的门槛,而是因为它有助于在业务应用(移动和桌面)的各种实现中使习惯用法和模式标准化。但是,如果这不是一个问题而且你已经在移动开发上拥有丰富的经验并投入了大量时间,那么React Native可能需要进行更仔细的评估,以确定团队是否会从可用的抽象和模式中受益。
当考虑React Native时,除了要考虑团队和专业知识,还应该意识到现有技术固有的一些限制。
- JavaScript的使用——如果团队或组织没有任何专注于JavaScript的开发人员或者已经具有丰富的移动开发经验,那么将工程师转到JavaScript和以JavaScript为中心的生态可能没有什么意义,这没问题。像用于Web的React一样,React Native不是银弹,应该根据权衡利弊进行评估,而不是根据围绕着它的炒作进行评估。
- 特定的性能需求——React Native是高性能的,但作为一种抽象事物,它可能对开发者或团队要达成的特定性能的目标造成另一个障碍。例如,如果应用的主要目标是渲染3D场景,那么React Native可能不是最合适的,其他框架(如Unity)可能更适合。这与我刚刚提到的“React不是银弹”的想法相契合,而且我已经尝试在前面几章中坚持这个观点。
- 高度专业化的应用程序——有些应用程序的类型不太适合React模型。增强现实(AR)、图形密集型或其他高度专业化的应用程序通常需要特定的库和大多数Web工程师不具备的技能。这并不是说不能用React Native来完成工作,但到目前为止React Native并未专注于解决这些需求。
- 内部应用——有时,大公司会开发内部使用的应用来帮助员工以各种方式更好地完成工作。React Native非常适合这类应用程序,因为这些应用程序的UI通常相对简单而且可以由不擅长移动开发的工程师快速迭代。
当然,一项技术是否对使用者的使用场景有意义最终要由使用者和团队评估,但希望读者现在能够更好地了解使用React Native的时机。