
React Native는 React와 앱 플랫폼의 기본 기능을 사용하여 Android 및 iOS 애플리케이션을 빌드하기 위한 오픈 소스 프레임워크이다.
사용자 인터페이스(UI)를 구축하기 위한 Facebook의 JavaScript 라이브러리인 React를 기반으로 하지만 React는 브라우저를 대상으로 하고 React Native는 모바일 플랫폼을 대상으로 한다.
그래서 웹 개발자도 JavaScript를 이용해서 "네이티브" 모양과 느낌을 주는 모바일 애플리케이션을 작성할 수 있다.
또한 작성하는 대부분의 코드를 플랫폼 간에 공유할 수 있기 때문에 React Native를 사용하면 Android와 iOS 모두에서 동시에 쉽게 개발할 수 있다.

(1)
WebView를 사용하는 다른 크로스 플랫폼(Cordova, Ionic 등)과는 다르게 실제 호스트 플랫폼의 표준 렌더링 API를 사용해서 렌더링한다.
➡️ WebView를 사용하면 성능상의 문제와 Native에서 사용하는 기본 UI 요소나 애니메이션을 Javascript, HTML 및 CSS 조합으로 모방하려고 하기에 한계가 있다.
➡️ React Native는 마크업 요소를 실제 네이티브 요소로 변환해서 사용한다.

(2)
리액트 네이티브는 리액트와 마찬가지로 state과 props가 변경되면 React Native의 뷰를 다시 렌더링 하는 것과 같이 React 사용하는 것과 대부분이 비슷하기에 React를 사용하는 웹 개발자라면 손쉽게 앱 개발을 할 수 있게 만들어 준다.
React Native와 React의 주요 차이점은 React Native가 HTML 및 CSS 마크업을 사용하는 대신 호스트 플랫폼의 UI 라이브러리를 활용하여 이를 수행한다는 것이다.


(3)
크로스 플랫폼이란 이름과 같이 대부분의 비슷한 소스 코드로 IOS와 Android 모두를 위한 앱 개발을 할 수가 있다. 이렇게 해서 많은 시간과 비용을 절약해서 앱을 만들수 있다.
React Native는 React와 앱 플랫폼의 기본 기능을 사용하여 Android 및 iOS 애플리케이션을 빌드하기 위한 오픈 소스 프레임워크

Android 개발에서는 Kotlin 또는 Java로 View를 작성한다.
iOS 개발에서는 Swift 또는 Objective-C를 사용한다.
React Native를 사용하면 React Component를 사용하여 JavaScript로 이러한 View를 호출할 수 있다.
런타임 시 React Native는 해당 구성 요소에 해당하는 Android 및 iOS View를 생성한다.
React Native 구성 요소는 Android 및 iOS와 동일한 보기에서 지원되기 때문에
React Native 앱은 다른 앱과 같은 모양, 느낌 및 성능을 제공합니다. 이러한 플랫폼 지원 구성 요소를 Native Components 라고 한다.

Native Components는 누구나 각자 원하는 바에 맞게 만들 수 있다.
Core Component는 리액트에서 기본 제공하는 Native Components이다.


리액트 네이티브를 이용할 때 개발 환경을 세팅하는 방법은 대표적으로 두가지가 있다.

리액트 앱은 웹 브라우저에서 실행되는 코드여서 Node.js와 직접적인 연관은 없지만,
프로젝트를 개발하는 데 주요 도구들이 Node.js를 사용하기 때문에 필요하다.
이때 사용하는 개발 도구는 바벨, 모듈화된 코드를 한 파일로 합치고 코드를 수정할 때 마다 웹 브라우저를 리로딩하는 등 여러기능을 지닌 웹팩등이 있다.
npx create-expo-app AwesomeProject

최신 자바스크립트 문법을 지원하지 않는 브라우저들을 위해서 최신 자바스크립트 문법을 구형 브라우저에서도 돌수 있게 변환 시켜주는 라이브러리
// Babel Input: ES6(ES2015) arrow function
[1, 2, 3].map((n) => n + 1);
// Babel Output: ES5 equivalent
[1, 2, 3].map(function(n) {
return n + 1;
});
해당 프로젝트에 대한 정보들이 들어있다.
프로젝트 이름, 버전, 필요한 라이브러리와 라이브러리의 버전들이 명시되어있다.
앱을 시작할 때 사용 할 스크립트, 앱을 빌드할 때, 테스트할 때 사용할 스크립트등이 명시되어있다.





adb kill-server
abd start-server
npm start
아이폰 기기 변경 : File => Open Simulator => IOS
