创建你的第一个应用

编辑页面

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


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

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

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

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


前提条件

我们需要以下内容来开始:

  • 物理设备上已安装 Expo Go
  • 已安装 Node.js(LTS 版本)
  • 已安装 VS Code 或任何其他你偏好的代码编辑器或 IDE
  • 一台 macOS、Linux 或 Windows(PowerShell 和 WSL2)设备,并已打开终端窗口

本教程假设你已经熟悉 TypeScript 和 React。如果你不熟悉它们,请查看 TypeScript HandbookReact 官方教程

1

初始化一个新的 Expo 应用

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

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

# 进入项目目录
cd StickerSmash

此命令将使用 默认 模板创建一个名为 StickerSmash 的新项目目录。该模板包含构建应用所需的基础样板代码和库,包括 Expo Router。接下来在本教程中,我们会根据需要继续添加更多库。

create-expo-app@latest 当前会创建一个 SDK 54 项目。本教程是为 SDK 54 设计的,因此不需要 --template 标志。
使用默认模板的好处
  • 创建一个已安装 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 > 扫描二维码 选项。在 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: 添加导航