๐ง ๊ฐ์
Expo๋ก ์ฑ ๊ฐ๋ฐ์ ์์ํ๋ ค๋ ๋ถ๋ค ์ค ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ App.js ๊ธฐ๋ฐ์ ๊ตฌํ ๊ตฌ์กฐ์ ๋จธ๋ฌผ๋ฌ ์์ต๋๋ค.
ํ์ง๋ง 2025๋ ํ์ฌ, Expo๋ expo-router์ TypeScript ๊ธฐ๋ฐ .tsx ๊ตฌ์กฐ๋ฅผ ์ค์ฌ์ผ๋ก ๋ฐ์ ์ค์ด๋ฉฐ, ๋ ๋น ๋ฅด๊ณ ์ ์ฐํ ์ฑ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋๋ค.
์ด๋ฒ ๊ธ์์๋ ์ ๊ฐ ์ค์ ๋ก ๊ฒช์ ์ํ์ฐฉ์ค๋ฅผ ๋ฐํ์ผ๋ก:
- .tsx๋ฅผ ์ฌ์ฉํ๋ ์ต์ Expo Router ๊ตฌ์กฐ ์๊ฐ
- ๊ธฐ์กด App.js ๋ฐฉ์๊ณผ์ ์ฐจ์ด์
- npx create-expo-app ์ค ๋ฐ์ํ ์์กด์ฑ ์ถฉ๋ ๋ฌธ์ ๋ค
์ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค.
1. ์ต์ Expo ํ๋ก์ ํธ์ ๊ตฌ์กฐ: .tsx์ expo-router
๊ธฐ๋ณธ ํน์ง
- .tsx ๊ธฐ๋ฐ TypeScript ํ๋ก์ ํธ
- app/ ํด๋ ๊ธฐ๋ฐ ์๋ ๋ผ์ฐํ
- expo-router ์ฌ์ฉ์ผ๋ก Next.js ์คํ์ผ ํ์ผ ๋ผ์ฐํ ์ง์
- App.js๋ ์์
๊ธฐ๋ณธ ํด๋ ๊ตฌ์กฐ ์์
pgsql
CopyEdit
just-time-app/
โโโ app/
โ โโโ index.tsx ← ํ ํ๋ฉด
โ โโโ Do.tsx ← Do ํ์ด์ง
โ โโโ _layout.tsx ← ๊ณตํต ๋ ์ด์์
โโโ tsconfig.json
โโโ babel.config.js
โโโ package.json
โ ๊ฐ ํ์ผ์ URL์ฒ๋ผ ์๋์ผ๋ก ๋ผ์ฐํ ๋จ (/Do, /settings, ๋ฑ)
2. ๐ค ๊ธฐ์กด App.js ๊ตฌ์กฐ์์ ์ฐจ์ด
ํญ๋ชฉ ๊ตฌํ ๋ฐฉ์ (App.js) ์ต์ ๋ฐฉ์ (expo-router)
์ง์ ์ | App.js | app/index.tsx |
๋ผ์ฐํ | ์๋ ์ค์ (Stack.Navigator) | ํ์ผ ๊ธฐ๋ฐ ์๋ ๋ผ์ฐํ |
ํ์ฅ์ฑ | ๋ณต์กํ ๊ตฌ์กฐ ํ์ | ํด๋ ๊ตฌ์กฐ๋ก ๊ฐ๋จํ ๊ตฌ์ฑ |
ํ์ ์ง์ | JS ๊ธฐ๋ฐ, ํ์ ์ง์ ์ง์ | TS ๊ธฐ๋ฐ, ํ์ ์๋ ์ถ๋ก |
๊ฐ์ฑ | ์ค๋๋ ํํ ๋ฆฌ์ผ๋ค๊ณผ ์นํจ | ์ต์ ํ๋ก์ ํธ๋ค๊ณผ ์นํจ |
โ expo-router๋ ์ค์ ๋ก Expo ๊ณต์ ๋ฌธ์์์๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ก ์ ์ ์ฑํ๋๊ณ ์์.
3. ๐ฃ npx create-expo-app ์ค์น ์ถฉ๋๊ณผ npm ์ค๋ฅ๋ค
์ ๊ฐ ๊ฒช์๋ ์ค๋ฅ๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. t with-router ์ต์ ๋ฌด์๋จ
npx create-expo-app just-time-app -t with-router
- โ ๋ฌธ์ : ํ ํ๋ฆฟ์ด ๋ฌด์๋๊ณ App.js ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ ์์ฑ๋จ
- โ ํด๊ฒฐ: CLI๊ฐ ๊ตฌ๋ฒ์ ์ด์์ → @latest ๋ช ์ ํ์
npx create-expo-app@latest just-time-app -t with-router
2. npm install expo ํ๋๋ ์์กด์ฑ ์ง์ฅ ์์๋จ
- โ ์ค์: ๊ทธ๋ฅ npm install expo ์ ๋ ฅ → ์ต์ Expo๊ฐ ๊ฐ์ ๋ก ์ค์น๋จ
- ๐ฅ ๊ฒฐ๊ณผ: ๊ธฐ์กด ํ๋ก์ ํธ์ react / react-native ๋ฒ์ ๊ณผ ์ถฉ๋
- โ ํด๊ฒฐ๋ฒ:
# ํญ์ ์ด๊ฑธ๋ก
npx expo install react react-native
๋๋ ์ ์ฒด ๊ฐ์ ์ด๊ธฐํ:
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps
3. react@16 vs react-native@0.78 ์ถฉ๋
- ๋ฌธ์ ๊ฐ ๋ ํญ๋ชฉ:
- react-router@4.3.1 ← ์น์ฉ ๊ตฌ๋ฒ์ ์ด ๋ผ์ด๋ค๋ฉด์ react@16 ์๊ตฌํจ
- Expo๋ react@18 ์ด์์ ์๊ตฌ
- ๐ฃ ๊ฒฐ๊ณผ: ์ค์น ์ ๋๊ณ dependency tree ์ถฉ๋
- โ ํด๊ฒฐ: package.json์์ react, react-router ์๋ ์ ๊ฑฐ ํ ์ฌ์ค์น
4. ๐ง ๋์ ์ค์น ์ฑ๊ณต ๊ณต์
# ์ต์ expo CLI๋ถํฐ
npm install -g create-expo-app
# ํ
ํ๋ฆฟ ์ง์
npx create-expo-app@latest just-time-app -t with-router
# ํ๋ก์ ํธ ํด๋ ์ง์
ํ
cd just-time-app
# ๋ชจ๋ ์์กด์ฑ ์ ๋ฆฌ
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps
# ํธํ ๋ฒ์ ์ผ๋ก ๊ฐ์ ์ค์น
npx expo install react react-native