728x90
728x90
Expo CLI vs. React Native CLI
들어가며
- 리액트 네이티브(React Native) 프로젝트 생성 방법으로 Expo CLI 와 React Native CLI 방법 2가지가 있다.
- 이 두 방법의 차이점을 간단하게 정리해본다.
Expo CLI
개념
- 리액트 네이티브로 앱을 개발할 때 사용되는 도구
- 프로젝트 생성, 관리, 실행을 간단하게 해주는 명령줄 인터페이스(Command Line Interface)
- 리액트 네이티브 프로젝트를 생성할 때 기본적으로 권장되는 접근 방식
새 프로젝트 생성하기
$ npx create-expo-app@latest <프로젝트명> # 새 프로젝트 생성
주요 특징
- 기본 템플릿을 제공하여 초기 설정 없이 바로 앱 개발 시작 가능
- 카메라, 위치 정보, 푸시 알림 등 네이티브 기능을 쉽게 사용할 수 있도록 지원
- 코드 수정 후 앱을 즉시 업데이트하여 개발 속도 향상 (Live Reload와 Hot Reload 기능)
- 실제 기기에서 앱을 테스트할 수 있도록 도와주는 Expo Go 앱 지원
- 앱을 빌드하지 않고도, QR 코드를 스캔해 코드 실행 가능
- Eject 기능을 이용하여 프로젝트를 React Native CLI로 전환 가능
장단점
장점
- 초보자에게 적합하며 프로젝트 생성 및 관리가 쉽다.
- 네이티브 디바이스 기능 접근이 간단하다. (예: 카메라)
- 추가적인 설정 작업 없이 바로 시작할 수 있는 관리형 앱 개발(Managed App Development) 워크플로우를 제공한다.
- 무료로 사용할 수 있으며, 추가적인 유료 기능도 제공하지만 필수는 아니다.
- 개발 편의성을 높여주는 다양한 패키지와 도구를 지원한다.
- Expo 사용 중 언제든 React Native CLI 로 전환할 수 있다.
단점
- 네이티브 코드(Java, Swift 등)를 직접 작성해야 할 경우 제한적이다.
- Expo 라이브러리가 포함되어 앱 크기가 커질 수 있다.
- Expo의 기본 워크플로우로 구현 불가능한 경우 React Native CLI로 전환(Eject) 작업이 필요하다.
React Native CLI
개념
- 리액트 네이티브 공식 개발팀에서 제공하는 공식 도구
- 리액트 네이티브 프로젝트를 생성하고 실행할 수 있는 명령줄 인터페이스(Command Line Interface)
- Expo와는 달리, 네이티브(Android 및 iOS) 환경에 대한 직접적인 제어를 제공하며, 네이티브 코드(Java, Swift 등)와의 통합이 필요할 때 주로 사용한다.
주요 특징
- Java, Kotlin, Swift, Objective-C 등으로 작성된 네이티브 코드와 쉽게 통합할 수 있다.
- 리액트 네이티브에서 제공하지 않는 기능을 직접 구현할 수 있다.
- 프로젝트 환경을 직접 설정하며 개발 유연성이 높다.
- Android Studio와 Xcode를 활용하여 빌드 및 배포 작업을 수행할 수 있다.
- 플랫폼(Android/iOS)마다 필요한 설정을 세밀하게 조정할 수 있다.
- Expo의 제한 없이, 모든 네이티브 기능과 외부 라이브러리를 자유롭게 사용할 수 있다.
새 프로젝트 생성하기
$ npx @react-native-community/cli@latest init <프로젝트명>
장단점
장점
- Expo CLI 이전에 개발된 공식 도구로, React Native 팀과 커뮤니티에서 관리한다.
- 네이티브 언어(Java, Kotlin, Swift, Objective-C)와의 통합이 더 용이하다.
- Expo 없이 순수 React Native 개발 환경을 구축할 수 있다.
단점
- Expo에 비해 더 많은 설정 및 구성 작업이 필요하다.
- Android Studio와 Xcode를 포함한 개발 환경 설정이 까다롭다.
- 네이티브 디바이스 기능 접근 시 작업이 더 복잡해진다.
- 네이티브 코드(Java, Swift 등)에 대한 지식이 필요할 수 있다.
- Expo처럼 간단한 명령으로 프로젝트를 관리하기 어렵다.
정리
특징 | Expo CLI | React Native CLI |
초기 설정 | 간단하고 빠르다. | 복잡하고 설정 작업이 많다. |
편의성 | 높은 편 | 낮은 편 |
네이티브 기능 접근성 | 쉬움 | 다소 복잡 |
네이티브 기능 통합 | 일부 제한 있음. | 완벽하게 통합 가능 |
에뮬레이터 실행 | Expo Go 앱으로 간단 실행 가능 | Android Studio / XCode 필요 |
프로젝트 관리 | Expo의 관리형 워크플로우 제공 | 수동 관리 |
유연성 | Expo에서 CLI로 전환 가능 | CLI에서 Expo로 전환 어려움. |
Expo CLI는 초보자와 빠른 개발을 원하는 사람들에게 적합하다. React Native CLI는 네이티브 코드와의 통합이 필수적인 고급 개발자에게 적합하다.
참고 사이트
728x90
728x90
'Programming > React Native' 카테고리의 다른 글
[React Native] 클릭 시, 리플 효과(Ripple Effect) 주는 방법 (1) | 2024.12.11 |
---|---|
[React Native] FlatList (0) | 2024.12.10 |
[React Native] Expo Go 앱에서 Expo 프로젝트 연결 안되는 문제 해결 방법 (There was a problem running the requested app) (0) | 2024.11.26 |