创建你的第一个应用

编辑页面

在本章中,学习如何创建一个新的 Expo 项目。


For the complete documentation index, see llms.txt. Use this file to discover all available pages.

在本章中,让我们学习如何创建一个新的 Expo 项目,以及如何让它运行起来。

观看:创建你的第一个通用 Expo 应用
观看:创建你的第一个通用 Expo 应用

从零开始创建一个新的 Expo 项目,并让它在 Android、iOS 和 web 上运行。


Prerequisites

4 requirements

1.

在实体设备上的 Expo Go

在一台实体的 Android 或 iOS 设备上安装 Expo Go

2.

Node.js(LTS)

在你的电脑上安装 Node.js(LTS 版本)

3.

代码编辑器

安装 VS Code 或任何你偏好的代码编辑器或 IDE。

4.

带有终端的开发机器

一台 macOS、Linux 或 Windows(PowerShell 和 WSL2)设备,并打开一个终端窗口。

本教程假设你已经熟悉 TypeScript 和 React。如果你还不熟悉,请查看 TypeScript 手册React 官方教程

1

初始化一个新的 Expo 应用

我们将使用 create-expo-app 来初始化一个新的 Expo 应用。它是一个用于创建新的 React Native 项目的命令行工具。在你的终端中运行以下命令:

Terminal
# 创建一个名为 StickerSmash 的项目
npx create-expo-app@latest StickerSmash

# CLI 会提示你选择一个模板。请选择 SDK 54。
Select an Expo SDK version > SDK 54

# 进入项目目录
cd StickerSmash
create-expo-app@latest 目前会要求你选择一个 Expo SDK 模板。本教程是为 SDK 54 设计的,所以请务必选择 SDK 54 模板。

这个命令会使用 SDK 54 的默认模板 创建一个名为 StickerSmash 的新项目目录。这个模板包含构建应用所需的基本样板代码和库,包括 Expo Router,并允许我们在已安装 Expo Go 的设备上测试应用。我们会在本教程中根据需要继续添加更多库。

使用默认模板的好处
  • 创建一个已安装 expo 包的 React Native 新项目
  • 包含推荐工具,例如 Expo CLI
  • 包含来自 Expo Router 的标签导航器,以提供基础导航系统
  • 自动配置为可在多个平台上运行项目:Android、iOS 和 web
  • 默认配置 TypeScript

2

下载资源

下载资源压缩包

在本教程中,我们会一直使用这些资源。

下载压缩包后:

  1. 解压压缩包,并替换 your-project-name/assets/images 目录中的默认资源。
  2. 在代码编辑器或 IDE 中打开项目目录。

3

运行 reset-project 脚本

在本教程中,我们将从头构建应用,并理解添加基于文件的导航的基础知识。让我们运行 reset-project 脚本来移除样板代码:

Terminal
npm run reset-project

运行上面的命令后,app 目录中只会保留两个文件(index.tsx_layout.tsx)。脚本会将 app 以及其他目录(componentsconstantshooks 中包含的样板代码)的之前文件移动到 app-example 目录中。我们会在后续过程中创建自己的目录和组件文件。

`reset-project` 脚本是做什么的?

reset-project 脚本会重置项目中的 app 目录结构,并将项目根目录中的之前样板文件复制到另一个名为 app-example 的子目录中。我们可以删除它,因为它不属于我们主应用的结构。

4

在移动设备和 web 上运行应用

在项目目录中,从终端运行以下命令以启动 开发服务器

Terminal
npx expo start

运行上面的命令后:

  1. 开发服务器将启动,你会在终端窗口中看到一个二维码。
  2. 扫描该二维码以在设备上打开应用。在 Android 上,使用 Expo Go > Scan QR code 选项。在 iOS 上,使用默认相机应用。
  3. 要运行 web 应用,请在终端中按 W。它会在默认的 web 浏览器中打开该应用。

当它在所有平台上都运行起来后,应用应该看起来像这样:

5

编辑 index 屏幕

app/index.tsx 文件定义了应用屏幕上显示的文本。它是我们应用的入口点,并会在开发服务器启动时执行。它使用 React Native 的核心组件,例如 <View><Text>,来显示背景和文本。

应用于这些组件的样式使用 JavaScript 对象,而不是 web 上使用的 CSS。不过,如果你以前在 web 上使用过 CSS,其中很多属性会让你觉得熟悉。大多数 React Native 组件都接受一个 style 属性,其值是一个 JavaScript 对象。更多细节请参阅 React Native 中的样式

让我们修改 app/index.tsx 屏幕:

  1. react-native 导入 StyleSheet,并创建一个 styles 对象来定义我们的自定义样式。
  2. <View> 添加一个 styles.container.backgroundColor 属性,值为 #25292e。这会改变背景颜色。
  3. <Text> 的默认值替换为 "Home screen"。
  4. <Text> 添加一个 styles.text.color 属性,值为 #fff(白色),以更改文本颜色。
app/index.tsx
import { Text, View, StyleSheet } from 'react-native'; export default function Index() { return ( <View style={styles.container}> <Text style={styles.text}>Home screen</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#25292e', alignItems: 'center', justifyContent: 'center', }, text: { color: '#fff', }, });

React Native 使用与 web 相同的颜色格式。它支持十六进制三元组(这就是 #fff 的形式)、rgbahsl,以及命名颜色,例如 redgreenblueperupapayawhip。更多信息请参阅 React Native 中的颜色

当你保存更改后,它们会被发送并应用到连接到开发服务器的正在运行的应用中:

总结

Chapter 1: Create your first app

我们已经成功创建了一个新的 Expo 项目,使用了 React Native 核心组件,并准备好开发我们的 StickerSmash 应用。

在下一章中,我们将学习如何为应用添加堆栈导航和标签导航。

Next: 添加导航