Thief of Wealth

렌더러

react는 가상 DOM 구조를 react-dom이라는 렌더러 패키지를 사용하여

물리 DOM 구조로 렌더링하는 방식으로 동작하는 프레임워크이다.

(홈페이지에는 라이브러리라고 되어있으나, 이제는 프레임워크라고 불러도 무방할듯)

 

이와 달리 react native는 react-native라는 렌더러 패키지를 사용하여 렌더링하는 방식으로 동작하는 프레임워크이다.

 

그래서 react는 DOM렌더러

react native는 native렌더러라고 불린다.

 

브리지방식 렌더링

모든것이 자바스크립트로 동작하는 react에서는 Raect.render라는 DOM렌더러의 동작을 코드로 확인할 수 있지만,

리액트 네이티브에서 native 렌더러의 모습은 확인할 수 없다.

왜냐하면 리액트의 네이티브 프로젝트의 android, ios 폴더에있는 java나 objective-c로 구현된 네이티브 모듈에서 렌더링이 진행되기 때문이다.

 

네이티브 모듈쪽에는 JavascriptCore라는 이름의 자바스크립트 엔진이 동작한다.

C++ 언어로 구현된 JavascriptCore는 안드로이드에서는 JNI (Java Native Interface), IOS에서는 FFI(Foreign Function Interface) 방식으로 연결되어 동작한다.

 

그래서 RN앱을 기기에서 실행하면, 네이티브 UI스레드와 App.tsx와 같은Javascript 코드가 동시에 동작한다.

이 2개의 스레드는 메시지큐 방식으로 서로 렌더링과 관련된 데이터를 주고받는다.

화면을 터치하면 UI스레드는 내용을 javascript 쪽 스레드로 이벤트형태로 넘기고, javascript에서 처리를하면 다시 UI스레드로 이벤트 형태로 넘긴다.

이런 방식을 브리지방식 프레임워크라고 한다.

 

 

'개발 > FrontEnd Interview' 카테고리의 다른 글

[react-native] inline-style과 StyleSheet 스타일 차이  (0) 2022.06.03
[react-native] yoga 엔진이란?  (0) 2022.06.03
OAuth란?  (0) 2021.12.08
http1.1 vs http2  (0) 2021.12.07
box-sizing에서 content-box, border-box 차이점  (0) 2021.12.03
profile on loading

Loading...