Reative Native란?
Facebook, 지금의 Meta가 개발한 오픈 소스 모바일 애플리케이션 프레임워크입니다.
모바일의 경우 보통 iOS, Android가 각각 개발되어 배포 됩니다.
그럼 iOS 개발을 위한 Object C나 Swift , Android 개발을 위한 Java나 Kotlin 공부가 필수인데요
Reactive Native는 Javascript 하나만 알고 있다면 iOS, Android 개발을 모두 해야할 필요 없이
하나의 개발로 두가지 Platform을 선점할 수 있습니다
즉 Croos Platform을 지원합니다
Reative Native를 사용하여 서비스 중인 App은?
위 링크에 접속하면 RN(React Native)로 만들어진 여러 서비스를 확인할 수 있어요
Instagram, Facebook 부터 Tesla까지 우리가 알고 있는 거대한 서비스가 RN으로 개발되었네요
Reative Native 동작원리
Javascript 코드로 개발한다고 하더라도 결국 iOS , Android 플랫픔으로 변환 즉
Javascript -> iOS ObjectC or Swift
Javascript -> Android Java or Kotlin
으로 변환이 되어야 코드가 잘 동작하고 서비스 될거에요
이 역할을 Bridge가 담당합니다
우린 Bridge를 믿고 맘놓고 Javacript로 개발하면! 너무 편하고 개발 속도가 향상될거에요
Reative Native의 장점
그럼 Reative Native의 장점을 한번 정리해볼게요
1. 하나의 코드로 관리, Learning Curve 가 높은 React 사용
앞서 말씀드렸던 것 처럼 Javascript라는 하나의 언어로 두가지 플랫폼 개발을 할 수 있다는 장점이 있습니다.
그리고 React 는 진입장벽이 꽤 높은 Framework입니다.
그런 React를 이미 접해본 개밸자라면 React Native를 쉽게 배울 수 있고
반대로 RN을 해본 개발자라면 다음에 React 웹개발도 쉽게 적응할 수 있어요.
2. Code Push로 빠른 업데이트
우리가 스마트폰에서 앱을 사용하거나 게임을 할 때면 "업데이트" 알람을 받은 적이 있을거에요.
React Native는 앱 업데이트 시 '심사 제출'이라는 단계 없이 Code Push를 통해 User에게 바로 배포할 수 있습니다.
즉 서비스 업데이트, 유지보수를 위한 비용을 엄청나게 절감할 수 있다는 의미입니다.
간혹 Native 자체가 업데이트 되어 심사가 필요한 경우가 있지만 대부분의 경우는 정말 편하게 업데이트할 수 있는게 장점입니다.
3. Fast Refresh
iOS, Android 같은 기존 Native App 방식과 달리 변경된 코드를 저장하기만 해도 이 내용이 자동으로 화면에 적용됩니다.
코드를 수정하고 저장하고 재빌드하는 작업이 RN에서는 모두 생략되기 때문에
개발자 입장에서 편리성이 많이 향상됩니다.
4. Opensource Platform
RN은 오픈소스이기 때문에 커뮤니티가 엄청나게 활성화되어 있습니다.
개발 시 부딪힐수 있는 많은 버그와 장애물에 대해 이미 경험한 전세계의 개발자들의 Solution을 활용할 수 있는거죠.
그리고 Opensource는 Chat GPT와 같은 Gen AI 시대에 너무 좋은 환경 같아요.
OpenSource로 자료가 방대한 만큼 AI가 질문함으로서 우리가 원하는 솔루션을 빨리 찾을 수 있습니다.
Reative Native의 단점
1. 일부기능 Native 접근 필요
RN의 장점은 Native를 몰라도 개발할 수 있다는 거에요.
그러나 단점은 결국 Native에 배포되기 때문에 Native에 대한 지식을 필수라는겁니다. 이상하죠...?
앱을 개발하면서 Native를 건드려야 하는 상황이 발생할 수 있기 때문에
iOS, Android 폴더 구조, 파일에 대한 일부 지식이 필요할 수 있어요.
그래서 Native기능이 필요하지 않은 Compact한 기능의 앱들에 대해서는 Expo Cli라는 것으로 통해 개발하기도 합니다.
2. 오픈소스, 라이브러리 의존도
OpenSource가 장점이기도 하면서 반대로 단점도 있습니다.
버그가 기능이 잘못된걸 발견할 경우, 개발자에게 issue를 올릴 수 있지만 언제 수정되고 업데이트 될 수 알 수 없어요.
RN뿐만 아니라 모든 OpenSource에게는 어쩔 수 없는것 같아요.
그래도 React처럼 꽤 활성화되어 있는 오픈소스는 속도가 평균보다 빠른것 같긴 합니다!
3. 성능
아무래도 Bridge를 사용하기 때문에 Native인 iOS나 Android보다 성능이 떨어질 수 밖에 없어요.
이건 iOS보다는 Android에서 조금 더 많이 발생할 수 있는데
코드 최적화 등을 통해 개선을 해볼 수 있으나 아직 완벽한 방법은 없는것 같아요
RN을 통해 빠른 서비스 출시 그리고 업데이트로 사용자의 Need를 파악하고, 서비스가 너무 커져서
감당이 안되게 되면 그때 Native개발로 전환하는 것도 좋은 방법일 것 같아요
4. 잦은 업데이트
RN의 Major 버전은 아직 0.ㅌ 입니다. 아직 1도 되지 않았어요
아직 안정적이지 않다는 의미일까요?
잦은 업데이트로 유지보수에 신경써야할게 생각보다 많을 수는 있을것 같아요
오늘은 React Native란 어떤것이지에 대해 자세히 알아봤습니다.
다음 포스팅에서는 Expo Cli와 React Native Cli 개념에 대해 알아볼게요!
'Computer Science > React Native' 카테고리의 다른 글
[React Native] React Hook useState 완벽 정리 (2) | 2023.09.06 |
---|---|
[React Native] Component Props 한번에 끝내기 (0) | 2023.09.05 |
[React Native] Core Component (0) | 2023.09.04 |
[React Native] EXPO Mac 개발환경 구축 , Hello world (0) | 2023.09.04 |
[React Native] Expo CLI와 React Native CLI 개념 (0) | 2023.09.04 |