Loading...
Loading...
Compare original and translation side by side
npx create-expo-apppackage.jsonnpx create-expo-apppackage.jsonnpx create-expo-app [demo-name] --template blank-typescriptpnpm add expo-router expo-image expo-haptics react-native-reanimated react-native-gesture-handler react-native-safe-area-context @gorhom/bottom-sheet @shopify/flash-list lucide-react-native nativewind tailwindcss@3nativewindapp.jsonpnpm startpnpm add [library]app.jsonnpx expo prebuildnpx create-expo-app [demo-name] --template blank-typescriptpnpm add expo-router expo-image expo-haptics react-native-reanimated react-native-gesture-handler react-native-safe-area-context @gorhom/bottom-sheet @shopify/flash-list lucide-react-native nativewind tailwindcss@3nativewindapp.jsonpnpm startpnpm add [library]app.jsonnpx expo prebuild| Field | Purpose |
|---|---|
| Display name |
| URL-safe identifier |
| Deep link scheme (e.g., |
| |
| Splash screen configuration |
| iOS bundle ID |
| Android package name |
| Expo config plugins (e.g., |
| 字段 | 用途 |
|---|---|
| 显示名称 |
| URL安全的标识符 |
| 深度链接协议(例如: |
| 屏幕方向(演示项目默认 |
| 启动屏配置 |
| iOS包标识符 |
| Android包名 |
| Expo配置插件(例如: |
app/_layout.tsxGestureHandlerRootView (flex: 1)
└── SafeAreaProvider
└── ThemeProvider / Context
└── Stack (Expo Router)GestureHandlerRootViewSafeAreaProvider<Stack screenOptions={{ headerShown: false }} />app/_layout.tsxGestureHandlerRootView (flex: 1)
└── SafeAreaProvider
└── ThemeProvider / Context
└── Stack (Expo Router)GestureHandlerRootViewSafeAreaProvider<Stack screenOptions={{ headerShown: false }} />expo-imagesourceplaceholdercontentFit'cover''contain''fill'transition300expo-imagesourceplaceholdercontentFit'cover''contain''fill'transition300Haptics.selectionAsync()Haptics.impactAsync(ImpactFeedbackStyle.Medium)Haptics.notificationAsync(NotificationFeedbackType.Success)Haptics.selectionAsync()Haptics.impactAsync(ImpactFeedbackStyle.Medium)Haptics.notificationAsync(NotificationFeedbackType.Success)useSafeAreaInsets(){ top, bottom, left, right }paddingTop: insets.toppt-[${insets.top}px]useSafeAreaInsets(){ top, bottom, left, right }paddingTop: insets.toppt-[${insets.top}px]snapPoints={['25%', '50%', '90%']}backdropComponentBottomSheetScrollViewGestureHandlerRootViewsnapPoints={['25%', '50%', '90%']}backdropComponentBottomSheetScrollViewGestureHandlerRootView@shopify/flash-listestimatedItemSizeestimatedItemSize={80}contentContainerClassName@shopify/flash-listestimatedItemSizeestimatedItemSize={80}contentContainerClassNameimport { Home, Settings, ChevronRight } from 'lucide-react-native'sizecolorstrokeWidthimport { Home, Settings, ChevronRight } from 'lucide-react-native'sizecolorstrokeWidth<StatusBar style="dark" /><StatusBar style="light" />expo-status-bar<StatusBar style="dark" /><StatusBar style="light" />expo-status-barGestureHandlerRootViewstyle={{ flex: 1 }}estimatedItemSize_layout.tsxuseSafeAreaInsets()SafeAreaViewGestureHandlerRootViewstyle={{ flex: 1 }}estimatedItemSize_layout.tsxuseSafeAreaInsets()Imageexpo-imageFlatListFlashListGestureHandlerRootViewestimatedItemSizeSafeAreaViewexpo-routerapp.jsonImageexpo-imageFlatListFlashListGestureHandlerRootViewestimatedItemSizeSafeAreaViewapp.jsonexpo-router