[ํด๋ผ์ฐ๋ฉ ์ดํ๋ฆฌ์ผ์ด์ ์์ง๋์ด๋ง TIL] 240314 - React Native ์์ํ๊ธฐ
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๊ฐ์ง
- One Source Multi Use
- ํ๋์ ์ฝ๋๋ก ์ฌ๋ฌ ํ๋ซํผ์ ์ง์ํ๋ค.
- ํซ ๋ฆฌ๋ก๋ฉ
- ์ฑ์ ๋ค์ ๋น๋ํ๊ฑฐ๋ ์ฌ์์ํ ํ์๊ฐ ์๋ค.
- 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 ์ฌ์ฉ์๋ผ ํฌ๊ฒ ์ด๋ ค์์ ์์๋ค.
์๋๋ก์ด๋ ํ๊ฒฝ๋ ์ฒดํฌํ๊ณ ์ถ์ด ์๋๋ก์ด๋ ์คํ๋์ค๋ฅผ ์ค์น๋ฅผ ํ๋๋ฐ ์ฉ๋ ๋ถ์กฑ์ผ๋ก ๋ค์ ์ญ์ ํ๋ค.. ๐