๊ฐœ๋ฐœ ๊ณต๋ถ€/๋ฐ๋ธŒ์ฝ”์Šค TIL

[ํด๋ผ์šฐ๋”ฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—”์ง€๋‹ˆ์–ด๋ง TIL] 240314 - React Native ์‹œ์ž‘ํ•˜๊ธฐ

๊ฐ€์šค์ด 2024. 3. 14. 21:16

Intro


๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋˜๊ณ  ์˜ค๋Š˜๋ถ€ํ„ด React Native์— ๋Œ€ํ•œ ๊ฐ•์˜๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

 

 

 

์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ


React Native์˜ ํƒ„์ƒ

PDA ๋“ฑ์žฅ๊ณผ ํ”ผ์ฒ˜ํฐ์˜ ์‹œ๋Œ€๋ฅผ ์ง€๋‚˜ ์Šค๋งˆํŠธํฐ์ด ๋“ฑ์žฅํ•œ ์ดํ›„ ์•ฑ ๊ฐœ๋ฐœ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค.

iOS๋‚˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŽ์•„์กŒ๊ณ  iOS์™€ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์„ ๋ณ„๋„๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž ์•ฑ ์•ˆ์— ์›น์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์›น์•ฑ๊ณผ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ์ด ๋“ฑ์žฅํ–ˆ๋‹ค. ๋”๋ถˆ์–ด ๋“ฑ์žฅํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์€ ์›น์„ ๋„์šฐ๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ ์•ฑ์„ ๋งŒ๋“ค์–ด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ๋™์ž‘ ๊ฐ€๋Šฅํ•œ ๊ธฐ์ˆ ์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ React Native์™€ Flutter, Xamarin์ด ์žˆ๋‹ค.

 

React Native๋Š” 2015๋…„ 3์›” ํŽ˜์ด์Šค๋ถ F8 ์ปจํผ๋Ÿฐ์Šค์—์„œ ๊ณต์‹ ๋ฐœํ‘œํ–ˆ์œผ๋ฉฐ ์ดˆ๊ธฐ ๋ฒ„์ „์€ iOS ์ง€์›์— ์ดˆ์ ์„ ๋‘๊ณ  ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.

 

๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ React Native์˜ ๋ณ€๊ฒฝ์ ์œผ๋ก  ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • FastRefresh
    • ์•ฑ์„ ์žฌ์‹คํ–‰ํ•  ํ•„์š” ์—†์ด ์ฆ‰์‹œ ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธํ•จ์œผ๋กœ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.
    • 0.6x ๋ฒ„์ „ ์ดˆ๋ฐ˜์— ๋ณ€๊ฒฝ๋จ
  • Auto link
    • iOS, Android ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ ๋„ค์ดํ‹ฐ๋ธŒ ์„ค์ • ์—†์ด ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Flutter VS React Native

Flutter๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ ๋™์ž‘ํ•˜๋Š” React Native ๋Œ€๋น„ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ ์žฅ์ ์ด ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Flutter๋Š” Dart๋ผ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ฏ์„ค๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜์ธ React Native๋ฅผ ๋ฐฐ์šฐ๊ธฐ์— ๋” ์ต์ˆ™ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

React Native์˜ ํ˜„์žฌ์™€ ๋ฏธ๋ž˜์˜ ์ „๋ง

  • 2019๋…„ Hermes JavaScript Engine
  • 2022๋…„ Fabric๊ณผ Turbo Modules
  • ๊ทธ๋ฆฌ๊ณ  ๋งฅ ์—†์ด iOS ๊ฐœ๋ฐœ์— ๋„์›€์„ ์ฃผ๋Š” Expo๋ฅผ ๊พธ์ค€ํžˆ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.

 

 

 


React Native์˜ ๊ธฐ๋ณธ ์›๋ฆฌ

React Native๋Š” JavaScript๋กœ ๊ฐœ๋ฐœํ•œ๋‹ค. ์•ฑ ๋‚ด์—์„œ JavaScript ์—”์ง„์ด ์ž‘๋™ํ•œ๋‹ค.

(๋„คํ‹ฐ์ด๋ธŒ ์•ฑ์—์„  Android๋Š” Kotlin์ด๋‚˜ Java / iOS๋Š” Swift๋‚˜ Objective-C๋กœ ๊ฐœ๋ฐœ)

 

React Native ํŠน์ง• 3๊ฐ€์ง€

  1. One Source Multi Use
    • ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์„ ์ง€์›ํ•œ๋‹ค.
  2. ํ•ซ ๋ฆฌ๋กœ๋”ฉ
    • ์•ฑ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ์žฌ์‹œ์ž‘ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  3. React
    • ์•ฑ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ UI๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์•ผ ํ•˜๋Š”์ง€ ์„ ์–ธ
    • ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์ž๋™์œผ๋กœ UI๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.

 

 

 


React Native ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

 

React Native · Learn once, write anywhere

A framework for building native apps using React

reactnative.dev

 

Get Started ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ React Native CLI Quickstart์—์„œ ๊ฐ์ž ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ค์น˜ํ•œ๋‹ค.

๋‚˜๋Š” macOS์— ์•„์ดํฐ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜๊ฐ€ ๋น„๊ต์  ๊ฐ„๋‹จํ–ˆ๋‹ค.

 

brew install node
brew install watchman

 

brew๋กœ node์™€ watchman์„ ์„ค์น˜ํ•œ๋‹ค.

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

CocoaPods๋Š” ์ •ํ™•ํžˆ ๋ฌด์Šจ ์—ญํ• ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ผ๋‹จ ์„ค์น˜ํ•œ๋‹ค.

 

CocoaPods.org

CocoaPods is built with Ruby and is installable with the default Ruby available on macOS. We recommend you use the default ruby. Using the default Ruby install can require you to use sudo when installing gems. Further installation instructions are in the g

cocoapods.org

 

XCode๋„ ์—†๋‹ค๋ฉด ์„ค์น˜ ํ›„ ๋ฌธ์„œ์— ๋‚˜์˜จ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

๋ชจ๋“  ์„ค์ •์ด ๋๋‚˜๋ฉด ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

npx react-native@latest init AwesomeProject

 

 

์‹คํ–‰

  • vscode
npm start

 

  • xcode

open โžก๏ธ ํ”„๋กœ์ ํŠธ ํด๋”์˜ ios ํด๋” ์—ด๊ธฐ โžก๏ธ 'โ–บ' ๋ฒ„ํŠผ ํด๋ฆญ

 

 

 

๋งˆ๋ฌด๋ฆฌ


์˜ค๋Š˜์€ React Native๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…์„ ํ•˜์˜€๋Š”๋ฐ ๋‹คํ–‰ํžˆ๋„ Mac + iOS ์‚ฌ์šฉ์ž๋ผ ํฌ๊ฒŒ ์–ด๋ ค์›€์€ ์—†์—ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ํ™˜๊ฒฝ๋„ ์ฒดํฌํ•˜๊ณ  ์‹ถ์–ด ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค๋ฅผ ์„ค์น˜๋ฅผ ํ–ˆ๋Š”๋ฐ ์šฉ๋Ÿ‰ ๋ถ€์กฑ์œผ๋กœ ๋‹ค์‹œ ์‚ญ์ œํ–ˆ๋‹ค.. ๐Ÿ˜‚