[React Native] Expo๋กœ RN ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ
728x90

React Native

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋Š” ๋ฆฌ์•กํŠธ๋กœ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ์žˆ์ง€๋งŒ, ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋‹ค.

  • ๋น„์šฉ ์ ˆ์•ฝ

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ, iOS ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์„ One Source, ์ฆ‰ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ๋™์‹œ์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋น„์šฉ, ์‹œ๊ฐ„ ์ธก๋ฉด์—์„œ ํฌ๊ฒŒ ์ ˆ์•ฝ๋œ๋‹ค.

  • ๋‚ฎ์€ ๋Ÿฌ๋‹์ปค๋ธŒ

๋„ค์ดํ‹ฐ๋ธŒ ์—ญ์‹œ ๋ฆฌ์•กํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ค„ ์•„๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ์˜ ์ตœ๊ทผ ์•„ํ‚คํ…์ฒ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

 

 

React Native ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ํ”„๋กœ์ ํŠธ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.

  • Expo Go
    • ์…‹์—…์ด ์•„์ฃผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Native ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. (java, swift ๋“ฑ์˜ ์–ธ์–ด๋กœ ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ)
    • ๋นŒ๋“œ์™€ ๋ฐฐํฌ๊นŒ์ง€ ํŽธํ•˜๊ฒŒ ๊ฐ€๋Šฅ
    • Expo CLI๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•œ๋‹ค.
  • React Native CLI
    • ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋†’์€ ์ž์œ ๋„!
    • ๋ชจ๋“  ์ธํ”„๋ผ๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค
    • Android Studio ๋˜๋Š” Xcode๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์—ฌ๊ธฐ์„œ ๋นŒ๋“œํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ ์™ธ์—๋„ CRNA (Create React Native App), ignite ๊ฐ™์€ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ์žˆ๋‹ค.

๋‚˜๋Š” ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ์—†์ด ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•ด๋ณด๊ธฐ ์œ„ํ•ด Expo๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

 

Expo๋กœ RN ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

๋จผ์ € ์‚ฌ์ „ ์ค€๋น„๋กœ Expo Go ์•ฑ์ด ๊น”๋ ค์žˆ์–ด์•ผ ํ•œ๋‹ค.

Expo ํšŒ์›๊ฐ€์ž…๋„ ํ•ด๋‘์–ด์•ผ ํ•œ๋‹ค!

https://expo.dev/

 

Expo

Expo is an open-source platform for making universal native apps for Android, iOS, and the web with JavaScript and React.

expo.dev

 

 

 

๊ฐ€์ž…์„ ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ Overview๊ฐ€ ๋‚˜์˜จ๋‹ค.

Expo๋ฅผ ์ฒ˜์Œ ์ด์šฉํ•˜๊ฑฐ๋‚˜, eas-cli๋ฅผ ์„ค์น˜ํ•œ ์ ์ด ์—†๋‹ค๋ฉด ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด์„œ CLI๋ฅผ ์„ค์น˜

npm install --global eas-cli

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์„œ ๋‘ ๋ฒˆ์งธ ์ค„์ธ create-expo-app ์„ ์‹คํ–‰ํ•œ๋‹ค.

์ž˜ ๋˜์—ˆ๋‹ค๋ฉด ์ด๋Ÿฐ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ด์ œ ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด์–ด์ฃผ๊ณ  EAS๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค.

 

 

๐Ÿ‘€ EAS(Expo Application Service)

  • Expo์˜ ํด๋ผ์šฐ๋“œ ๋นŒ๋“œ ์„œ๋น„์Šค. ๋ช…๋ น์–ด ํ•˜๋‚˜๋งŒ์œผ๋กœ ์†์‰ฝ๊ฒŒ ๋ฐฐํฌ ๊ฐ€๋Šฅ!

๊นƒํ—ˆ๋ธŒ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๊ฐ™์€ ๋Š๋‚Œ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

๋กœ๊ทธ์ธ ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋จผ์ € ๋œจ๋Š”๋ฐ Expo ๊ฐ€์ž…ํ•œ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

๋ฐฐํฌ

์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ๊นŒ์ง€์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

eas update

๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์„ ํƒํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, ํŽธํ•œ ๋Œ€๋กœ ์„ค์ •. (๋‚˜๋Š” ๊ธฐ๋ณธ์ธ main์œผ๋กœ ์ง„ํ–‰ํ•จ)

๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด URL์ด ํ•˜๋‚˜ ๋œฌ๋‹ค.

๋งํฌ๋กœ ๋“ค์–ด๊ฐ€์„œ OS๋ณ„ Preview๋ฅผ ๋ˆ„๋ฅด๋ฉด QR์ฝ”๋“œ๊ฐ€ ๋‚˜์˜จ๋‹ค!

์•ฑ์Šคํ† ์–ด๋‚˜ ํ”Œ๋ ˆ์ด์Šคํ† ์–ด์—์„œ ์•ฑ์„ ๋“ฑ๋กํ•˜๋Š” ๊ณผ์ • ์—†์ด ๊ฐ„์ด ๋ฐฐํฌ ์™„๋ฃŒ!

 

 

 

React Native์˜ ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ๋“ค

์•„๋ž˜๋Š” ๊ณต์‹๋ฌธ์„œ์—์„œ ๋งํ•˜๋Š” ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ๋“ค์ด๋‹ค.

์›น๊ณผ ๋น„๊ตํ•ด๋ณด์•˜์„ ๋•Œ ํฌ๊ฒŒ ์ด๋ ‡๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

  • <View> ์ปดํฌ๋„ŒํŠธ
    • <div> ํƒœ๊ทธ
  • <Text> ์ปดํฌ๋„ŒํŠธ
    • <p> ํƒœ๊ทธ
    • RN์—์„œ๋Š” ํ…์ŠคํŠธ๋ฅผ ๊ผญ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.
  • <Image> ์ปดํฌ๋„ŒํŠธ
    • <img> ํƒœ๊ทธ
    • ๋กœ์ปฌ์—์„œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” require ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉ
    • <Image source={require('./img/check.png')} />
    • ์™ธ๋ถ€ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” uri ์†์„ฑ ์ด์šฉ
    • <Image style={{ width: 100, height: 100 }} source={{uri: 'https://velog.velcdn.com/images/_jouz_ryul/post/1a19773e-605e-4ed1-a0f3-245b7c2e13cd/image.jpeg',}}/>
  • <ScrollView> ์ปดํฌ๋„ŒํŠธ
    • ์Šคํฌ๋กค ํ•  ์ˆ˜ ์žˆ๋Š” <div> ํƒœ๊ทธ
  • <TextInput> ์ปดํฌ๋„ŒํŠธ
    • <input type="text"> ํƒœ๊ทธ

๊ทธ๋ฆฌ๊ณ  ๋ฒ„ํŠผ์ฒ˜๋Ÿผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” <TouchableOpacity> ์ปดํฌ๋„ŒํŠธ. onPress๋ผ๋Š” ์†์„ฑ์„ ํ†ตํ•ด onClick ์‹œ์˜ ๊ธฐ๋Šฅ์„ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

UI ์ปดํฌ๋„ŒํŠธ ์™ธ์—๋Š” ๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹๊ณผ ๋งŽ์€ ์ฐจ์ด๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. (์•„์ง๊นŒ์ง€ ๋Š๋ผ๊ธฐ์—”!)
์›น๋งŒ ๋ณด๋‹ค๊ฐ€ ์•ฑ์„ ๋ณด๋‹ค ๋ณด๋‹ˆ ๋ญ”๊ฐ€ ์ƒˆ๋กญ๊ธฐ๋„ ํ•˜๊ณ .. ๐Ÿ‘€

 

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋Š˜ ๊ธ€์„ ๋งˆ์นœ๋‹ค!

https://reactnative.dev/

 

React Native · Learn once, write anywhere

A framework for building native apps using React

reactnative.dev

 

728x90