发布于 2026-01-06 2 阅读
0

2021年如何构建React Native应用📱(第一部分)简介及总结

2021年如何构建React Native应用📱(第一部分)

介绍

概括

介绍

React Native 是一个非常流行的原生移动应用开发框架。与React一样,React Native也缺乏明确的规范,因此你需要做出很多实现方面的决策。本文将探讨如何根据你的需求,找到构建应用的最佳方法。

1. Bootstrap

在 React Native 中,有几种方法可以启动一个新项目:

React Native CLI

这是创建 React Native 应用的标准工具。✅
优点:

  1. 高度可定制。它会创建两个独立的应用程序,一个用于 iOS,一个用于 Android。这些都是原生应用程序,因此您可以根据需要修改原生代码。
  2. 您可以随时升级到最新的 React Native 版本。
  3. 没有任何限制,您可以选择最适合自己的方式。

❌缺点:

  1. 初始设置有点复杂。您需要配置 Xcode 和 Android Studio。
  2. 由于需要修改原生代码,因此很难将 React Native 更新到新版本。
  3. 你从盒子里拿不到什么好东西。

Expo CLI

Expo 是一套围绕 React Native 构建的工具集。它类似于 create-react-app,并且拥有许多功能。

✅ 优点:

  1. 最简单的入门方式。无需编写本地代码。
  2. 开箱即用,功能丰富(相机、OTA 更新、推送通知等等)。
  3. 易于在真机上进行测试。

❌缺点:

  1. 存在一些局限性
  2. 除非执行 eject 操作,否则无法更改本地代码。
  3. 当 React Native 发布新版本时,您需要等到 Expo 发布兼容版本。

结论:在很多情况下,使用 Expo 都很有意义,尤其是在 React Native 新手入门时。我个人认为它是一个很棒的工具,但它也增加了一层复杂性。值得注意的是,您可以随时从 Expo 中退出,并完全访问底层原生项目。

2. JavaScript 或 TypeScript

TypeScript 是一种扩展自 JavaScript 的语言,它添加了类型定义。React
Native CLI 和 Expo CLI 都支持 TypeScript 模板。

# React Native CLI
npx react-native init MyApp --template react-native-template-typescript
Enter fullscreen mode Exit fullscreen mode
# Expo. Select TypeScript template.
expo init MyTSProject
Enter fullscreen mode Exit fullscreen mode

有时你会觉得 TypeScript 会拖慢你的速度。这主要是因为很多包没有类型定义。但 TypeScript 越来越流行,将来这不会再是个问题。使用 TypeScript 的优势在于,它能在编译时捕获更多错误,并且还能提供更好的代码补全功能。

结论:如果你要开发一个小型应用,使用 TypeScript 可能意义不大。但对于中型和大型应用,我强烈建议从一开始就使用 TypeScript。

3. 类组件与函数式组件

我看到很多人在 Stack Overflow 上问,他们应该使用基于类的组件还是函数式组件和 Hooks。这里我就不详细赘述了,因为这是一个比较复杂的话题,不过 Dan Abramov 在这个视频里解释了使用 Hooks 的好处。

结论:我喜欢用函数式组件和 Hooks 来构建我的所有项目。我在许多新的代码库和教程中都看到了这种趋势。如果你仍然想使用类,不用担心, React 目前没有计划移除类。

4. 状态管理

这非常重要,会对开发产生重大影响。状态管理指的是在应用程序中共享数据的方式。在 React 中,每个组件都可以拥有自己的状态,数据可以通过 props 从父组件传递到子组件。但是,对于非父子关系的两个组件,传递数据却并非易事。许多库都在尝试解决这个问题,其中最流行的是 Redux。

React 16.3 引入了Context,当它与 hooks 结合使用时,可以形成一种强大的状态管理模式。

务必查看React State Museum。在这里,您可以找到使用不同状态管理库实现的打包清单应用程序。

结论:如果你正在构建一个简单的应用程序,可能不需要像 Redux 或 MobX 这样的库。它们需要编写大量的样板代码,并且会增加应用程序的复杂性。但是,如果你要构建一个大型应用程序,其中包含大量的数据获取、操作和异步操作,那么务必选择合适的工具。Redux 仍然非常流行,但你绝对应该了解一下 MobX(尤其是MobX State Tree)。

5. UI 工具包

UI工具包提供了一系列样式化的UI组件,可以帮助您更快地构建应用程序。市面上有一些流行的工具包:

结论:使用 UI 工具包确实很方便,可以立即获得诸如页脚、页眉或菜单之类的组件。但我必须强调,选择一个积极维护的库至关重要。

6. 造型

使用 React Native,你可以用 JavaScript 来设置应用程序的样式。每个核心组件都接受一个 style 属性。但是,不建议使用内联样式,因为它们会降低代码的可读性。Stylesheet
一个 CSS 样式表抽象层,它允许你将样式从渲染函数中分离出来。styled -componentsemotion
是两个强大的库。它们功能类似,并且都与 React Native 兼容。

结论:与 Web 开发不同,React Native 应用的样式设置选项非常有限。使用内联样式是一种糟糕的做法,因此我强烈建议在样式表和样式组件之间做出选择。

7. 身份验证

大多数现代应用程序都使用某种形式的身份验证。许多应用程序都实现了社交登录(例如使用 Google、Facebook、Apple 或类似帐户登录),因为这是一种快速安全的身份验证方式。Expo用于登录多个身份验证提供商。其他流行的解决方案包括Firebase AuthenticationAWS Amplify Authentication

如果您打算对自己的后端进行身份验证,则可能需要持久化 JWT 或类似的令牌。请注意,异步存储并不安全,更好的选择是使用React Native Keychain

结论:如果社交登录符合您的需求,我强烈推荐,因为它能让您的工作更轻松。我个人觉得 Firebase 非常易用。此外,还有一个软件包可以将 Firebase 支持引入 React Native。

概括

今天就先讲到这里。
在本文的第二部分,我们将讨论推送通知、OTA 更新、分析以及其他许多您应该添加到应用中的重要功能。

文章来源:https://dev.to/cristianrita/how-to-build-a-react-native-app-in-2021-part-i-2a5o