React Native λ?
μ΄λ²μ μ΄ν리μΌμ΄μ κ°λ° νλ‘μ νΈ 2κ°μ μ°Έμ¬νκ² λμλ€.
λ μ± κ°λ°μ μ¬μ©ν react nativeμ λν΄ μ 리νκ³ κ°λ°μ μ§ννλ €κ³ νλ€.
리μ‘νΈ λ€μ΄ν°λΈ
- νμ΄μ€λΆμμ 곡κ°ν μ€νμμ€
- μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λλ 리μ‘νΈ κΈ°λ°
- iOSμ μλλ‘μ΄λμμ λμνλ λ€μ΄ν°λΈ λͺ¨λ°μΌ μ΄ν리μΌμ΄μ μ λ§λλ μλ°μ€ν¬λ¦½νΈ νλ μμν¬
ex) νμ΄μ€λΆ, μΈμ€νκ·Έλ¨, νν°λ μ€νΈκ° μ΄κ²μΌλ‘ κ°λ°
μ₯μ
- μΉ κ°λ°μκ° μ΅μν κΈ°μ (리μ‘νΈ, μλ°μ€ν¬λ¦½νΈ)μ μ΄μ©νμ¬ λͺ¨λ°μΌ μ± κ°λ°μ ν μ μμ
- ν¬λ‘μ€ νλ«νΌ νλ μμν¬ : λλΆλΆμ μ½λκ° νλ«νΌ κ° κ³΅μ κ° κ°λ₯ν΄μ iOSμ μλλ‘μ΄λλ₯Ό λμμ κ°λ°ν μ μμ
- Fast Refresh κΈ°λ₯: 리μ‘νΈ λ€μ΄ν°λΉλ λ³κ²½λ μ½λλ₯Ό μ μ₯νκΈ°λ§ ν΄λ μλμΌλ‘ λ³κ²½λ λ΄μ©μ΄ μ μ©λ νλ©΄μ νμΈν μ μμ
λ¨μ
- λ€μ΄ν°λΈμ μλ‘μ΄ κΈ°λ₯μ μ¬μ©νλ λ° μ€λ κ±Έλ¦Ό
μλλ‘μ΄λλ iOSμμ μ λ°μ΄νΈλ₯Ό ν΅ν΄ μ κ· APIλ₯Ό 리μ‘νΈ λ€μ΄ν°λΈκ° μ§μκΉμ§ μκ°μ΄ κ±Έλ¦Ό
- μ¦μ μ λ°μ΄νΈ. νλ λ¬ μ¬μ΄μ λ²μ μ΄ νλμ© μ¬λΌκ°λ κ² κ°λ°μ λ°©ν΄κ° λ λλ μλ€
- μ μ§λ³΄μκ° μ΄λ €μ. κ°λ° λ¨κ³μμ λ¬Έμ κ° μκ²Όμ λ μμΈμ μ°Ύκ³ λ¬Έμ λ₯Ό ν΄κ²°νλλ° λ§μ μκ°μ΄ κ±Έλ¦Ό
<리μ‘νΈ λ€μ΄ν°λΈ λμ λ°©μ>
Javascript ↔ Bridge ↔ Native
- 리μ‘νΈ λ€μ΄ν°λΈ μμλ κΈ°κΈ°μ ν΅μ νλ λͺ¨λ JSμ κΈ°λ₯μ λΆλ¦¬λ μ€λ λλ‘ μ²λ¦¬νλ©΄μ μ±λ₯ν₯μμ μ΄λ£Έ
- μλ°μ€ν¬λ¦½νΈ μ€λ λ: μλ°μ€ν¬λ¦½νΈ μ½λκ° μ€νλλ μ₯μμ΄λ©° λ³΄ν΅ λ¦¬μ‘νΈλ‘ ꡬμ±λμ΄ μμ
λΈλ¦Ώμ§(Bridge)
- μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ΄μ©ν΄ λ€μ΄ν°λΈ κ³μΈ΅κ³Ό ν΅μ ν μ μλλ‘ μ°κ²°νλ μν
- λΈλ¦Ώμ§λ μλ°μ€ν¬λ¦½νΈ μ€λ λ(thread)μμ μ 보λ₯Ό λ°μ λ€μ΄ν°λΈλ‘ μ λ¬
λ€μ΄ν°λΈ μμ
- λ©μΈ μ€λ λ: UIλ₯Ό λ΄λΉ
- μλ(shadow) μ€λ λ: λ μ΄μμμ κ³μ°νλ λ° μ¬μ©νλ λ°±κ·ΈλΌμ΄λ μ€λ λ
- λ€μ΄ν°λΈ λͺ¨λ: κ° λͺ¨λμλ μ체 μ€λ λκ° μλλ°, μλλ‘μ΄λμ κ²½μ° thread poolμ 곡μ
DOM
- λ¬Έμ κ°μ²΄ λͺ¨λΈ(The Document Object Model)λ‘ HTML, XML λ¬Έμμ νλ‘κ·Έλλ° interface, λ¬Έμμ ꡬ쑰νλ νν
- νλ‘κ·Έλλ° μΈμ΄κ° DOM ꡬ쑰μ μ κ·Όνμ¬ λ¬Έμ ꡬ쑰, μ€νμΌ, λ΄μ© λ±μ λ³κ²½ν μ μμ
- μΉ νμ΄μ§λ₯Ό μ€ν¬λ¦½νΈ λλ νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©λ μ μκ² μ°κ²°νλ μν
- DOMμ μΉ νμ΄μ§μ κ°μ²΄ μ§ν₯ ννμ΄λ©°, μλ°μ€ν¬λ¦½νΈμ κ°μ μ€ν¬λ¦½ν μΈμ΄λ₯Ό ν΅ν΄ DOMμ μμ ν μ μμ
- DOM : νλ©΄μ λνλλ DOM
- κ°μ(virtual) DOM : νλ©΄μ 보μ΄μ§ μμ§λ§ λΉκ΅λ₯Ό μν΄ μ‘΄μ¬νλ DOM, λ°μ΄ν°κ° λ³ν κ²½μ° μλμΌλ‘ νλ©΄μ λ€μ κ·Έλ¦Ό
- λ°μ΄ν°μ λ³νκ° μκΉ
- λ³νλ λ°μ΄ν°λ₯Ό μ΄μ©νμ¬ κ°μ DOMμ κ·Έλ¦Ό
- κ°μ DOMκ³Ό μ€μ DOMμ λΉκ΅νμ¬ μ°¨μ΄μ μ νμΈ
- μ°¨μ΄μ μ΄ μλ λΆλΆλ§ μ€μ DOMμ μ μ©νμ¬ κ·Έλ¦Ό
JSX ( JavaScript XML )
- μλ°μ€ν¬λ¦½νΈ νμ₯ λ¬Έλ²μΌλ‘ XMLμ λΉμ·ν¨
- JSXκ° μλ°μ€ν¬λ¦½νΈλ³΄λ€ κ°λ μ±μ΄ μ’κ³ μ€λ₯ κ²μ¬μλ μ©μ΄ν¨
μλ°μ€ν¬λ¦½νΈ μ½λ μμ UI μμ μ ν λ κ°λ μ±μ΄ μ’κΈ° λλ¬Έμ 리μ‘νΈμμ λ§μ΄ μ¬μ©ν¨
- JSXλ‘ μμ±λ μ½λλ λ°λ²¨(Babel)μ μ¬μ©νμ¬ μλ°μ€ν¬λ¦½νΈλ‘ λ³ν
리μ‘νΈ λ€μ΄ν°λΈμμ 리μ‘νΈ λ€μ΄ν°λΈ μΉ(React Native for web)μ λ°ννλ©΄μ 리μ‘νΈ λ€μ΄ν°λΈλ‘ μΉ κ°λ°κΉμ§ κ°λ₯ν΄μ‘λ€.