This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

创建你的第一个应用

编辑页面

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


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

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

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


Prerequisites

4 requirements

1.

在实体设备上安装 Expo Go

在实体 Android 或 iOS 设备上安装 Expo Go。在实体 iOS 设备上,你还需要一个免费的 Expo 账户,并且必须在 Expo CLI 和 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 57。
- Select an Expo SDK version > SDK 57

# 进入项目目录
- cd StickerSmash
# 创建一个名为 StickerSmash 的项目
- yarn create expo-app StickerSmash

# CLI 将提示你选择一个模板。选择 SDK 57。
- Select an Expo SDK version > SDK 57

# 进入项目目录
- cd StickerSmash
# 创建一个名为 StickerSmash 的项目
- pnpm create expo-app StickerSmash

# CLI 将提示你选择一个模板。选择 SDK 57。
- Select an Expo SDK version > SDK 57

# 进入项目目录
- cd StickerSmash
# 创建一个名为 StickerSmash 的项目
- bun create expo StickerSmash

# CLI 将提示你选择一个模板。选择 SDK 57。
- Select an Expo SDK version > SDK 57

# 进入项目目录
- cd StickerSmash

此命令将使用默认模板创建一个名为 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
- yarn run reset-project
- pnpm run reset-project
- bun run reset-project

运行上述命令后,src/app 目录中会留下两个文件(index.tsx 和 _layout.tsx)。脚本会将 src 目录中的原有文件(包括 components、constants 和 hooks)移至 example 目录。接下来,我们会创建自己的目录和组件文件。

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

reset-project 脚本会重置项目中 src/app 目录的结构,并将项目 src 目录中的原有样板文件移至名为 example 的子目录。由于它不属于主应用的结构,我们可以将其删除。

4

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

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

Terminal
- npx expo start
- yarn expo start
- pnpm expo start
- bun expo start

运行上面的命令后:

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

应用在所有平台上运行后,应该如下所示:

5

编辑 index 屏幕

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

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

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

  1. 从 react-native 导入 StyleSheet,并创建一个 styles 对象来定义我们的自定义样式。
  2. 为 <View> 添加一个 styles.container.backgroundColor 属性,值为 #25292e。这会改变背景颜色。
  3. 将 <Text> 的默认值替换为 "Home screen"。
  4. 为 <Text> 添加一个 styles.text.color 属性,值为 #fff(白色),以更改文本颜色。
src/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', }, });

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

蓝色齿轮图标是什么?

蓝色齿轮图标是 Android 和 iOS 平台的 Tools 按钮。它是一个浮动快捷方式,可打开开发者菜单,其中提供重新加载应用和切换 Fast Refresh 等调试功能。它只会在开发过程中显示,不会包含在生产构建中。

本教程其余部分的截图中会隐藏该图标。要隐藏它:

  1. 打开开发者菜单。摇晃设备;如果你使用模拟器、仿真器或通过 USB 连接的设备,也可以在运行开发服务器的终端中按 M。
  2. 找到 Tools 按钮 选项,并将其关闭。

隐藏该按钮不会禁用开发者菜单。需要时,你仍然可以按照步骤 1 中所述的方式打开它。

总结

Chapter 1: Create your first app

We've successfully created a new Expo project, used React Native core components, and are ready to develop our StickerSmash app.

In the next chapter, we will learn how to add a stack and a tab navigator to our app.

Next: Chapter 2: Add navigation