๐Ÿ“ฑ 33. React Native ์™„์ „ ์ž…๋ฌธ โ€” Expo vs CLI, ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ• ๊นŒ?

JM_Devยท2025๋…„ 5์›” 12์ผ
0
post-thumbnail

React๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์–ด๋А ์ˆœ๊ฐ„,
โ€œ์ด๊ฑธ๋กœ ๋ชจ๋ฐ”์ผ ์•ฑ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ?โ€๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๊ทธ๋•Œ ๋“ฑ์žฅํ•˜๋Š” ๊ธฐ์ˆ ์ด ๋ฐ”๋กœ React Native๋‹ค.
React๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ(Android, iOS)์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

๊ทผ๋ฐ ๋ง‰์ƒ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ๋ณด๋ฉด ๋‘ ๊ฐ€์ง€ ๊ธธ์ด ๋‚˜์˜จ๋‹ค.

  1. Expo๋กœ ์‹œ์ž‘ํ•˜๊ธฐ
  2. React Native CLI๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋‘ ๋ฐฉ์‹์˜ ์ฐจ์ด์™€
์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€,
๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ์™€ ์‹คํ–‰ ๋ฐฉ๋ฒ•๊นŒ์ง€ ์ •๋ฆฌํ•ด๋ดค๋‹ค.


โœ… React Native๋ž€?

React๋ฅผ ์ด์šฉํ•ด iOS/Android ์•ฑ์„ ๋™์‹œ์— ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

  • ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๋‘ ํ”Œ๋žซํผ์„ ๋ชจ๋‘ ์ปค๋ฒ„ ๊ฐ€๋Šฅ
  • ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•˜์ง€ ์•Š์•„๋„ ๋จ
  • ๋‹จ, ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์›น๊ณผ๋Š” ๋‹ค๋ฅธ ํ™˜๊ฒฝ์ด๋‹ค

๐Ÿš€ Expo vs React Native CLI ์ฐจ์ด

ํ•ญ๋ชฉExpoReact Native CLI
์„ค์ •๋งค์šฐ ๊ฐ„๋‹จ๋ณต์žก (Android/iOS ํ™˜๊ฒฝ ์ง์ ‘ ์„ธํŒ…)
์‹คํ–‰์›น์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ (npx expo start)Android Studio / Xcode ํ•„์š”
๋นŒ๋“œExpo ์„œ๋ฒ„์—์„œ ๋นŒ๋“œ ๊ฐ€๋Šฅ์ง์ ‘ ๋นŒ๋“œ ์„ค์ • ํ•„์š”
๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ˆ˜์ •โŒ ์•ˆ ๋จ (eject ํ•„์š”)โœ… ์ž์œ ๋กญ๊ฒŒ ๊ฐ€๋Šฅ
์•ฑ ํฌ๊ธฐ์•ฝ๊ฐ„ ํผ์ตœ์ ํ™” ๊ฐ€๋Šฅ

๐Ÿงฉ ์–ธ์ œ Expo๋ฅผ ์“ฐ๋ฉด ์ข‹์„๊นŒ?

โœ… ๋น ๋ฅด๊ฒŒ ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์„ ๋•Œ
โœ… ๋””์ž์ธ ์œ„์ฃผ, ๊ธฐ๋Šฅ์ด ๊ฐ€๋ฒผ์šด ์•ฑ
โœ… ํŒ€์›์ด ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์ ์„ ๋•Œ
โœ… Expo SDK ์•ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ๋•Œ


๐Ÿง‘โ€๐Ÿ’ป ์–ธ์ œ React Native CLI๋ฅผ ์จ์•ผ ํ• ๊นŒ?

โœ… ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ์„ ์ง์ ‘ ์—ฐ๊ฒฐํ•ด์•ผ ํ•  ๋•Œ
โœ… ๊ธฐ์กด ์•ฑ์— RN์„ ๋ถ™์ด๋ ค๋Š” ์ƒํ™ฉ (Hybrid ์•ฑ)
โœ… Android/iOS ํ”Œ๋žซํผ์— ํŠนํ™”๋œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ
โœ… ์•ฑ ์‚ฌ์ด์ฆˆ, ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์ค‘์š”ํ•œ ์ƒํ™ฉ


๐Ÿ”ง ์„ค์น˜ ๋ฐ ์‹คํ–‰ ์˜ˆ์‹œ (Expo ๊ธฐ์ค€)

npm install -g expo-cli
npx create-expo-app myApp
cd myApp
npx expo start
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ QR์ฝ”๋“œ ๋„์›€
  • ํ•ธ๋“œํฐ์— Expo Go ์•ฑ๋งŒ ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ!

๐Ÿ“‚ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

myApp/
โ”œโ”€โ”€ App.tsx          // ๋ฉ”์ธ ์ปดํฌ๋„ŒํŠธ
โ”œโ”€โ”€ assets/          // ์ด๋ฏธ์ง€, ํฐํŠธ ๋“ฑ ์ •์  ์ž์‚ฐ
โ”œโ”€โ”€ components/      // UI ์ปดํฌ๋„ŒํŠธ
โ”œโ”€โ”€ screens/         // ํŽ˜์ด์ง€ ๋‹จ์œ„ ํ™”๋ฉด
โ”œโ”€โ”€ app.json         // ์•ฑ ์„ค์ •
  • React๋ž‘ ๋น„์Šทํ•˜์ง€๋งŒ, ์‹ค์ œ HTML ํƒœ๊ทธ๊ฐ€ ์•„๋‹Œ ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ
  • ex: <View>, <Text>, <ScrollView>, <Button> ๋“ฑ

๐Ÿ“ ๋‚ด๊ฐ€ ๋А๋‚€ ์ 

์ฒ˜์Œ์— CLI๋กœ ์‹œ์ž‘ํ•˜๋ ค๋‹ค ์„ค์น˜๋ถ€ํ„ฐ ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ๋ณต์žกํ•ด์„œ ์ขŒ์ ˆํ–ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ Expo๋ฅผ ์จ๋ณด๋‹ˆ ๋ฐ”๋กœ ์•ฑ ํ™”๋ฉด์ด ๋ณด์ด๊ณ 
React ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ต์ˆ™ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋น ๋ฅด๊ฒŒ MVP๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋„ˆ๋ฌด ์ข‹์•˜๋‹ค.

๋‚˜์ค‘์— ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ๋Š” eject๋„ ๊ฐ€๋Šฅํ•˜๋‹ˆ
์ผ๋‹จ์€ Expo๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฑธ ๊ฐ•๋ ฅ ์ถ”์ฒœ!


๐Ÿ“ฆ โ€œ๋ชจ๋ฐ”์ผ ์•ฑ๋„ ์ด์ œ๋Š” React์ฒ˜๋Ÿผ ๊ฐœ๋ฐœํ•˜์ž. ์‹œ์ž‘์€ Expo๋กœ!โ€


profile
๊ฐœ๋ฐœ์ž๋กœ ์ทจ์—…์„ ์ค€๋น„ ์ค‘ ์ด๋ฉฐ, ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ์ค‘ ์ž…๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€