React Native는 진화된 하이브리드 앱 개발 프레임워크다 

기존의 웹에서 하이브리드를 지원하기 위해 다양한 개발방법이 나타났다 

React Native와 비교할 군은 크게 2가지 이다. 


1. HTML5 웹 앱 

   기본적으로 HTML CSS Javascrip를 통해 만든다 

   따로 앱스토어에서 설치하지 않아도 되지만 DOM이라는 웹 문서를 로딩하는 것이 성능적으로 최악의 단점이다. 

   네이티브 기능을 사용하지 못하고 웹브라우저에서 보는 것과 비슷하다 


2. WebView 기반의 하이브리드 앱 

   단순히 모바일 플랫폼만 공유되는 것이 아니라 Web 기술과 Native 기술도 혼합되어 있다 

   네이티브 앱처럼 동작하는 것처럼 보일 수 있으나 Native 위의 WebView에서 호출하는 구조이다.  느리다고 한다 


React Native의 React는 기본적으로 1. React 웹 앱 기반이다. 즉 HTML과 CSS JavaScript를 사용한다. 

단, 차이가 있다 아래는 그 차이가 기존 웹 앱의 성능을 개선한 점을 설명한다. 


React Native가 다른 웹앱 or 하이브리드 앱보다 성능적으로 좋은 이유 


1. 기존 웹 처럼 HTML을 사용하지만 실제로 호출되는 것은 Native Module 이다. 

   <div> <span> 등 HTML의 태그 형식을 따르지만 실제로 보여지는 것은 Native View의 Component로 치환된다. 

   실제 코딩도 HTML과 똑같지 않고 치환되는 Tag 선언을 따른다. 즉 네이티브를 호출할 수 있는 React Native만의 문법이 있다. 

   내부에서는 Native를 호출해서 구현하기 때문에 빌드과정에서 Object C나 Java 코드와 같은 Native Code와 매칭된다. 


2. 기존의 Native앱은 Compile 과정을 거치기 때문에 변경사항이 생기면 새로 Compile을 거쳐 수정사항을 반영하는 시간이 있었다 

   React Native는 이런 Recompile 거치지 않고도 View의 Tag를 변경해서 Reload 만으로 수정사항을 확인할 수 있다 이것은 개발 생산성과 연관이 있다. 


3. Native Code로 치환되고 그것과 Bridge로 연결된다는 이점은 필요한 Native Module을 직접 제작하거나 다른 사람이 만든 Module을 재활용할 수 

   있다는 이점이 있다.

   React Native는 Java나 Object-C, Swift로 만든 Module과 연결되기 때문에 자유도가 높은 Native 개발이 가능하다. 단 웹언어외에 Native 언어로도 

   구현을 해야 한다는 개발자의 역량에 대한 부담이 생긴다. 이것은 장점이자 단점이다.  


4. 위에서 웹 언어의 DOM 문서의 로딩이 오래 걸린다는 단점을 지적했다. 그 부분을 개선하기 위해 React Native는 Virtual DOM이라는 기술이 도입되었다

   이 기술은 간단히 말하면 해당 페이지의 모든 DOM을 로딩하는 것이 아니라 변경사항이 생긴 DOM 부분만 로딩해서 반영한다. Virtual DOM은

   WebView 그리고 웹앱의 단점을 커버해줄 것으로 보인다 단 객관적인 비교 수치나 테스트는 해봐야 알 것 같다 


5. WebView를 거치지 않고 Native Module을 호출할 수 있기 때문에 WebView에 의한 지연이 개선되었고 내부에서 JS Thread와 UI Thread가 단일 Process

  로 동작하는 것이 아니라 병렬과 비동기로 동작 하도록 설계되었기 때문에(이 부분은 확인해 볼 것) 단일 Thread의 단점을 커버해준다. 즉 이런 부분을 

  보면 기존의 하이브리드 앱과 웹앱의 단점을 모두 개선하려고 노력한 부분이 느껴진다.   

'Developer > Mobile(React Native)' 카테고리의 다른 글

강의 공부 자료  (0) 2018.07.27
React Native -Props-  (0) 2018.07.17
리액트 네이티브 개발자와 대화2  (1) 2018.07.17
리액트 네이티브 개발자와 대화  (0) 2018.06.29
개발환경(Windows)  (0) 2018.06.28

+ Recent posts