๐ Development/React Native
React Native์ ์๋ ์๋ฆฌ
Jay Din
2023. 6. 15. 12:07
728x90
๋ฐ์ํ
๋ฐ์ํ
React Native์ ์๋ ์๋ฆฌ
- JSX๋ก ์ง์ฌ์ง ์์ค๋ฅผ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ ์์ํฌ์ ์ฌ๋ฆฐ๋ค.
- ๋ฐ๋ฒจ์ ํตํด ์ฝ๋๊ฐ JS bndle ๋ผ์ JS thread์์ JSX์ฝ๋๊ฐ ์คํ๋๋ค.
- ๊ฐ ํ๋ซํผ์ ์ฑ ์คํ์ native thread์ ์ํด ์คํ๋๋๋ฐ, JS thread์ Native thread๊ฐ ์ง์ ์ ์ผ๋ก ์ปค๋ฎค๋์ผ์ด์ ์ ํ ์ ์์ด์ ์ค๊ฐ์ react native์์ ์ ๊ณต๋๋ bridge์ ์ํด ์ํธ์์ฉํ๋ค.
- bridge๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ์๋ ์ฝ๋๊ฐ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ณํ์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ด๋ค.
๋ฐ๋ฒจ(Babel) ์ด๋?
์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์,
Babel์ ํตํด ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํด์ฃผ๋ ์ปดํ์ผ๋ฌ์ด๋ค.
์ด๊ธฐ์ ๋ฐ๋ฒจ์ ES6 ์ฝ๋๋ฅผ ES5 ์ฝ๋๋ก ๋ณํํด ์ฃผ๋ ์ผ๋ง ํ์ง๋ง, ํ์ฌ๋ ๋ฆฌ์กํธ์ JSX๋ฌธ๋ฒ๋ ์ฒ๋ฆฌํด์ค๋ค.
ํธ๋ ์คํ์ผ๋ฌ๋ ์์ค๋ฅผ ์ ๋ ฅ ๋ฐ์ผ๋ฉด ๋ค๋ฅธ ์์ค๋ก ๋ณํํ๋ ์ปดํ์ผ๋ฌ์ ์ผ์ข ์ด๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค.
โ
๋ฐ๋ฒจ ์งํ ๋จ๊ณ
1. ํ์ฑ(Parsing): ์ฝ๋๋ฅผ ์ฝ๊ณ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST)๋ก ๋ณํํ๋ ๋จ๊ณ
2. ๋ณํ(Transforming): ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ฅผ ๋ณ๊ฒฝ
3. ์ถ๋ ฅ(Printing): ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ถ๋ ฅ
JS Bundle ์ด๋?
Bundle์ “์ด๋ค ๊ฒ๋ค์ ๋ฌถ๋๋ค”๋ผ๋ ๋ป์ผ๋ก,
๊ธฐ๋ฅ๋ณ๋ก ๋ชจ๋ํ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ค์ ๋ฌถ์ด์ค๋ค๋ ๋ป์ด๋ค.
Bridge ์ด๋?
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๊ฐ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ณํ๋๋ ๊ณผ์ ์๋ Bridge๊ฐ ํ์ํ๋ค.
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ด์ฉํด์ ๋ค์ดํฐ๋ธ ๊ณ์ธต๊ณผ ํต์ ํ ์ ์๋๋ก ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ bridge๊ฐ ์๋ค.
JavaScript Thread ์ด๋?
๋ฆฌ์กํธ ์ฝ๋๊ฐ ์คํ๋๋ ์ฅ์(๋ณดํต ๋ฆฌ์กํธ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด์๋ค.)
Native Thread ์ด๋?
๋ค์ดํฐ๋ธ ๊ณ์ธต ์ฝ๋
Main Thread: UI๋ฅผ ๋ด๋นํ๋ ๋ฉ์ธ ์ค๋ ๋
Shadow Thread: ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ก ๋ ์ด์์์ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉ๋๋ค.
Native Module: ๊ฐ ๋ชจ๋์ ์์ฒด ์ค๋ ๋
๋ฐ์ํ
728x90
๋ฐ์ํ