| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Node.js
- GoogleLogin
- Personal Access Token
- ๋์์ธํจํด
- ์ค๋ธ์
- CICD
- injection๊ณต๊ฒฉ
- ์ฝํ
- node.js mysql ์ฐ๋
- java์ฑํ
- ์๊ณ ๋ฆฌ์ฆ
- oauth
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- dockerhub
- db์ํคํ ์ณ
- SpringBoot
- @scheduler
- ์ฝ๋ฉํ ์คํธ
- Jenkins
- ์ฟ ๋ฒ๋คํฐ์ค
- MySQL
- Java
- db์ ๋ต
- ๋ ผ๋ธ๋กํน
- ์๋ฐ
- spring scheduler
- spring
- docker
- React
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Today
- Total
<Hello Hosung๐/>
[Expo + React Native] 1. ํ๋ก์ ํธ ์ด๊ธฐ ๊ตฌ์กฐ ์๋ฒฝ ์ดํด ๋ณธ๋ฌธ
[Expo + React Native] 1. ํ๋ก์ ํธ ์ด๊ธฐ ๊ตฌ์กฐ ์๋ฒฝ ์ดํด
์ข์ถฉ์ฐ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ผ๊ธฐ๐ง 2025. 11. 30. 21:011. ํ๋ก์ ํธ ๋ชฉํ
์ด๋ฒ ํฌ์คํ
์์๋ Expo + React Native๋ฅผ ์ด์ฉํด ์ฑ ํ๋ก์ ํธ๋ฅผ ์์ ํ ์ด๊ธฐํํ๊ณ ,
ํ์ ์๋ ํ์ผ ์ ๊ฑฐ + ํด๋ ๊ตฌ์กฐ์ ์ฃผ์ ํ์ผ ์ญํ ์ ์ดํดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์คํ๋์ ํ๋ฉด์ ์ ์ธํ๊ณ , ์ด๋ณด์๊ฐ ํด๋/ํ์ผ ์ญํ ์ ์ดํดํ ์ ์๋๋ก ์ ๋ฆฌํฉ๋๋ค.
1๏ธโฃ ํ๊ฒฝ ์ค๋น
1-1. Node.js ์ค์น ํ์ธ
node -v
npm -v
- ๊ถ์ฅ Node.js ๋ฒ์ : LTS (์: v20.x)
- ๋ง์ฝ ์ค๋ฅ๊ฐ ๋๋ฉด nvm ์ฌ์ฉํ์ฌ ์ค์น:
nvm install --lts
nvm use --lts
1-2. Expo CLI ์ค์น ํ์ธ
์ต๊ทผ Expo๋ npx create-expo-app ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
npx create-expo-app --version
๊ธฐ์กด์ expo-cli ์ค์น๋์ด ์์ด๋ ์ด์ npx ์ฌ์ฉ์ด ๊ณต์ ๊ถ์ฅ
2๏ธโฃ ํ๋ก์ ํธ ์์ฑ
2-1. ์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
npx create-expo-app JJIK-F
ํ ํ๋ฆฟ: blank (TypeScript) ์ถ์ฒ
์ค์น๊ฐ ์๋ฃ๋๋ฉด ํ๋ก์ ํธ ํด๋๋ก ์ด๋:
cd JJIK-F
2-2. ์คํ ํ์ธ
npx expo start
๋ธ๋ผ์ฐ์ ์์ Metro Bundler๊ฐ ์ด๋ฆผ
QR ์ฝ๋๋ก iOS / Android ์ฑ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฐ๋ฅ
3๏ธโฃ ๋ถํ์ํ ํ์ผ ์ญ์
์ด๊ธฐ ํ
ํ๋ฆฟ์๋ ์ํ ์ฝ๋์ ์์ ํ์ผ์ด ๋ค์ด ์์.
์ด๋ณด์๋ ์ง์์ ๊น๋ํ๊ฒ ์์ํ๋ ๊ฑธ ์ถ์ฒ.
3-1. ์ญ์ ๋ชฉ๋ก
rm -rf app/(tabs) app/modal.tsx
rm -rf components/* services/* utils/* store/*
rm README.md package-lock.json expo-env.d.ts eslint.config.js
3-2. ๋จ๊ฒจ์ผ ํ๋ ํ์ ํ์ผ
- app/_layout.tsx
- app/index.tsx
- package.json
- app.json
- tsconfig.json
- assets/
4๏ธโฃ ํด๋๋ณ ์ญํ
| ํด๋/ํ์ผ | ์ญํ |
| app/ | ํ๋ฉด(Screen) ๋จ์, ๋ผ์ฐํ ๊ฒฝ๋ก ๊ด๋ฆฌ |
| _layout.tsx | ์ ์ฒด ๋ ์ด์์, ๊ณตํต ๋ค๋น๊ฒ์ด์ |
| index.tsx | ์ฒซ ํ๋ฉด, ์ฑ ์ง์ ์ |
| assets/ | ์ด๋ฏธ์ง, ํฐํธ ๋ฑ ์ ์ ์์ |
| components/ | ์ฌ์ฌ์ฉ UI ์ปดํฌ๋ํธ |
| services/ | ์๋ฒ/API ์์ฒญ ๊ด๋ฆฌ |
| store/ | ์ ์ญ ์ํ ๊ด๋ฆฌ |
| utils/ | ๊ณตํต ์ ํธ ํจ์ |
| package.json | ๋ผ์ด๋ธ๋ฌ๋ฆฌ/์คํฌ๋ฆฝํธ/์์กด์ฑ ๊ด๋ฆฌ |
| app.json | Expo ์ฑ ์ค์ |
| tsconfig.json | TypeScript ์ค์ |
| node_modules/ | ์ค์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
5๏ธโฃ ํต์ฌ ํ์ผ ์ญํ
5-1. _layout.tsx
import { Stack } from "expo-router";
export default function RootLayout() {
return <Stack />;
}
๋ชจ๋ ํ๋ฉด์ ๊ณตํต ๊ตฌ์กฐ ๋ด๋น
Stack Navigation์ผ๋ก ํ๋ฉด ์ ํ ๊ด๋ฆฌ
ํญ/ํค๋ ๋ฑ ๊ณตํต ์์ ํฌํจ ๊ฐ๋ฅ
5-2. index.tsx
import { View, Text } from "react-native";
export default function Index() {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>Hello! Expo App</Text>
</View>
);
}
์ฑ ์ง์ ํ๋ฉด
_layout.tsx ์์ ํฌํจ๋์ด ์ต์ด๋ก ํ์
์จ๋ณด๋ฉ, ํ ํ๋ฉด ๋ฑ ๋ผ์ฐํ ์ฐ๊ฒฐ ๊ฐ๋ฅ
6๏ธโฃ ํด๋ ์์ฑ (์ด๊ธฐํ ๊ธฐ์ค)
mkdir components utils services store
์์ผ๋ก ์ปดํฌ๋ํธ, ์ ํธ, API, ์ํ๊ด๋ฆฌ๋ฅผ ์ฌ๊ธฐ์ ๋ชจ์ ๊ด๋ฆฌ
7๏ธโฃ ํ๋ก์ ํธ ์คํ
๋ฃจํธ ํด๋์์ ์คํ:
npx expo start
QR ์ฝ๋ ์ค์บ → iOS / Android์์ ์ฑ ํ์ธ
์ฑ ์คํ ํ ํ๋ฉด์ด ๊นจ๋ํ๊ฒ “Hello! Expo App” ํ์๋จ
8๏ธโฃ ํ๋ก์ ํธ ๊ตฌ์กฐ ์ต์ข ์ ๋ฆฌ
JJIK-F/
โโโ app/
โ โโโ _layout.tsx
โ โโโ index.tsx
โ
โโโ assets/
โ โโโ images/
โโโ components/
โโโ services/
โโโ store/
โโโ utils/
โโโ package.json
โโโ app.json
โโโ tsconfig.json
โโโ node_modules/
'๐ฑ JavaScript > ใ คReact, RN' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [React, RN] ํจ์จ์ ์ธ ๋ ๋๋ง๊ณผ ๋น ๋ฅธ ๋ก๋ฉ์ ์ํ ์ ๋ต (1) | 2024.11.25 |
|---|---|
| [React, RN] ๋ฆฌ์กํธ ๋ผ์ฐํฐ ์์ ์ ๋ณต (1) | 2024.11.24 |
| [React, RN] ๋ฆฌ์กํธ ํ (React Hooks) ์๊ฐ๐ (0) | 2024.11.22 |
| [React, RN] ๋ฆฌ์กํธ ์์ํ๊ธฐ๐ (0) | 2024.11.21 |