답변:
나는 엑스포에서 일한다!
코드를 작성할 때 코드 Expo
를 작성 React Native
하십시오. Expo
두 가지 주요 부분이 있습니다.
1) expo-cli
: 프로젝트 생성, 로그보기, 장치 열기, 게시 등을위한 개발자 도구
2) Expo
클라이언트 : 통과 할 필요없이, 당신은 당신이 그들에 작업하는 동안 프로젝트를 열 수 있습니다 휴대 전화 응용 프로그램 XCode
또는 Android Studio
도하고, 다른 사람들이 너무 그들을 볼 수 있습니다! 를 통해 게시하면 사용자는 게시 된 동일한 계정으로 로그인 한 경우 Android 또는 iOS expo-cli
의 Expo
클라이언트를 통해 언제든지 액세스 할 수 있습니다 . 또한, 독립형 앱을 구축하여 사람들이 Expo
클라이언트를 사용하여 앱 을 열 필요가 없으며 원하는 경우 앱 스토어에 배포하고 재생할 수 있습니다.
따라서 Expo
/ around 위에 빌드 된 도구 세트입니다 React Native
. 이러한 툴은 우리가 보유하고있는 하나의 주요 신념에 의존 Expo
합니다. 포괄적 인 API 세트가 노출되어있는 경우 기본 코드를 작성할 필요없이 대부분의 앱을 빌드 할 수 있습니다 Javascript
.
이것은 React Native
항상 네이티브 코드로 드롭 다운 할 수 있기 때문에 중요 합니다. 이것은 때때로 굉장히 도움이되지만 비용이 듭니다. 테스트를 원한다면 사람들에게 바이너리를 보내야합니다. 다른쪽에있는 누군가는 작업하는 동안 링크를 탭할 수 없습니다. 한 번의 클릭으로 누군가가 브라우저에서와 비슷한 방식으로 액세스 할 수 있도록 게시 할 수는 없습니다.
를 사용 Expo
하면 가능한 경우 기본 코드로 넘어 가지 않도록하십시오. 위에서 언급했듯이에 사용할 수있는 포괄적 인 API 세트가 Javascript
있으면 대부분의 앱에는 필요하지 않을 것입니다. 따라서이 포괄적 인 API 세트를 제공 한 다음 기본 런타임이 공유되는 세계에 존재할 수있는 모든 멋진 툴링을 구축하는 것을 목표로합니다.
그러나 네이티브로 절대 드롭 다운 해야하는 경우 네이티브 프로젝트에서와 동일한 수준의 제어 ExpoKit
를 Expo
제공하면서 네이티브 API를 계속 사용할 수 있습니다 . " ExpoKit
는 더 큰 표준 네이티브 프로젝트의 일부로 Expo
플랫폼 및 기존 Expo
프로젝트 를 사용할 수있는 Objective-C 및 Java 라이브러리입니다 ." 자세한 내용은 여기를 참조하십시오.
Expo 직원의 문서 및 답변 요약을 수행하려고했습니다.
네이티브 초기화 반응 :
장점 :
단점 :
엑스포
장점 :
단점 :
가장 중요한 포인트를 요약 할 수 있기를 바랍니다. 추가 포인트를 자유롭게 추가하십시오.
출처 : https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ issues / 516 # issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (일반적인 공식 문서)
Brent Vatne의 대답은 괜찮지 만 세부 사항을 추가하고 싶습니다.
React Native는 필요한 모든 JS API를 제공하지는 않지만 대부분의 기본 기능 만 제공합니다. React Native 개발자는 Android Studio / XCode를 사용하여 추가 네이티브 라이브러리를 연결해야합니다. Expo는 RN을 향상시키고 가장 일반적인 요구에 필요한 모든 JS API를 제공하는 것을 목표로합니다. 기본적으로 ExpoKit이라는 단일 라이브러리에 이미 패키지 된 잘 정의 된 고품질 네이티브 라이브러리 세트입니다. 때때로 이러한 라이브러리는 실제로 RN 세계에 이미 존재하며 ExpoKit에 통합되어 있습니다.
또한 Expo 팀은 사용되지 않는 많은 API를 제공하기 때문에 hello world 앱 크기가 커질 수 있기 때문에 ExpoKit에 모든 lib를 포함시킬 수는 없습니다. 대부분의 앱에서.
다른 시스템 (CodePush ...)과 마찬가지로 Expo는 무선으로 앱을 업데이트하는 시스템을 제공합니다. 즉, CD 번들에 JS 번들을 업로드하면 다음 번에 시작할 때 상점에서 공개 / 검토를 요청하지 않고 모바일 앱이 자동으로 새 JS를 다운로드하여 사용합니다.
Expo는 CDN에서 JS 번들을 업로드 / 관리하는 CLI 도구를 제공합니다. 개발을 위해 CDN이되고 localhost에서 JS 번들을 호스팅하도록 선택할 수도 있습니다. XDE는 CLI의 시각적 래퍼 일뿐입니다.
Expo 클라이언트는 Expo와 호환되는 모든 앱을로드 할 수있는 일반 클라이언트입니다. 모든 Expo 앱은 정확히 동일한 기본 런타임 (RN + ExpoKit)을 공유하지만 유일한 차이점은 우리가 제공하는 JS입니다. 앱 스토어에 게시 한 Expo 앱에는 JS 번들 URL이 하드 코드되어 있습니다. Expo 클라이언트는 QRCode를 스캔하거나 URL을 제공하여 JS를로드 할 URL을 선택할 수 있도록 특정 방식으로 빌드됩니다.
이 클라이언트는 로컬 호스트에서 JS 번들을로드 할 수 있으며 XCode 또는 Android Studio가 필요하지 않으므로 개발 환경을보다 쉽게 만들 수 있으며 전화에서 첫 번째 Hello World를 몇 시간에서 몇 분까지 실행하는 것이 훨씬 빠릅니다. 실제로 Mac없이 iPhone에서 개발할 수 있으며 설정에는 2 분이 걸립니다.
실제로 Expo SDK를 업그레이드 할 수 있으므로 Expo 클라이언트에는 호환성 계층이 포함되어 있으므로 마지막 5 개의 SDK 버전을 실행할 수 있습니다.
모든 Expo 앱이 동일한 기본 코드를 공유하므로 Expo는 이러한 앱을 쉽게 구축 할 수 있습니다. 그들은 클라우드 빌드 서비스를 만들었습니다.
Expo에서 빌드 한 2 개의 앱을 차별화하는 주요한 것은 앱이 실행하기 위해 JS 번들을 다운로드해야하는 하드 코드 된 URL입니다.
Expo는 앱 아이콘, 방향, 권한, API 키를 설정하는 선언적 방법 제공, 푸시 알림 설정 지원, 프로파일 프로비저닝 등 많은 다른 작업을 수행합니다. 앱에서 빌드 타임에 많은 설정을 하드 코딩해야하며 공중에서 바꾸지 마십시오.
반응 네이티브는 비슷한 코르도바입니다. 동일한 뷰 기술 (네이티브 대 웹뷰)은 아니지만 자바 스크립트에서 기본 기능을 제어 할 수 있으며 개발자가 새로운 JS / 네이티브 바인딩을 쉽게 추가 할 수 있도록 플러그인 시스템을 제공합니다.
PhoneGap은 Expo와 유사합니다. 둘 다 사전 정의 된 추가 기본 플러그인 세트로 빌드 한 기본 플랫폼의 원시 API를 보강하려고합니다. PhoneGap은 빌드 서비스를 제공 하며 일반 클라이언트가 있습니다. 승인 된 플러그인을 사용하는 한 작동 를 있습니다.
보다시피 Expo는 도구 세트입니다. 결국 모바일 프로젝트를 상점에 쉽게 개발, 공유 및 게시 할 수 있습니다. PhoneGap 환경과 매우 유사하지만 혼동이 적습니다.
다음 두 경우를 제외하고는 새로운 React Native 그린 필드 프로젝트에 Expo를 추천 할 것입니다.
공식 엑스포 문서에 설명되어 있습니다.
Expo는 Rails for React Native와 비슷합니다. 많은 것들이 당신을 위해 설정되었으므로 시작하고 올바른 길을가는 것이 더 빠릅니다.
Expo를 사용하면 Xcode 또는 Android Studio가 필요하지 않습니다. 원하는 텍스트 편집기 (Atom, vim, emacs, Sublime, VS Code 등)를 사용하여 JavaScript를 작성하기 만하면됩니다. Mac, Windows 및 Linux에서 XDE (Google 데스크톱 소프트웨어)를 실행할 수 있습니다.
Expo가 즉시 사용할 수있는 몇 가지 기능은 다음과 같습니다.
iOS 및 Android 지원
iOS와 Android 모두 Expo로 작성된 앱을 즉시 사용할 수 있습니다. 각각에 대해 별도의 빌드 프로세스를 거칠 필요가 없습니다. iOS 또는 Android의 App Store 또는 컴퓨터의 시뮬레이터 또는 에뮬레이터에서 Expo Client 앱의 Expo 앱을 열기 만하면됩니다.
푸시 알림
푸시 알림은 단일 통합 API를 사용하여 iOS와 Android에서 즉시 작동합니다. APNS 및 GCM / FCM을 설정하거나 ZeroPush 등을 구성 할 필요가 없습니다. 우리는 지금 당장 쉽게 할 수 있다고 생각합니다.
페이스 북 로그인
제대로 설정하는 데 시간이 오래 걸릴 수 있지만 Expo에서 10 분 이내에 작동하도록해야합니다.
즉시 업데이트
XDE에서 게시를 클릭하면 모든 Expo 앱을 몇 초 안에 업데이트 할 수 있습니다. 아무것도 설정할 필요가 없습니다. 그것은 단지 이런 식으로 작동합니다. Expo를 사용하지 않는 경우 Microsoft Code Push를 사용하거나이 문제에 대한 자체 솔루션을 적용하십시오.
자산 관리
이미지, 비디오, 글꼴 등은 모두 Expo를 통해 인터넷을 통해 동적으로 배포됩니다. 즉, 즉시 업데이트 작업이 가능하며 즉시 변경할 수 있습니다. Expo에 내장 된 자산 관리 시스템은 리포지토리의 모든 자산을 CDN에 업로드하여 모든 사람이 신속하게로드 할 수 있도록합니다.
엑스포가 없으면 일반적인 방법은 애셋을 앱에 번들로 묶어 변경할 수 없다는 것입니다. 또는 자산을 CDN 또는 이와 유사한 것으로 관리해야합니다.
새로운 리 액트 네이티브 릴리스로보다 쉽게 업데이트
우리는 몇 주마다 새로운 엑스포를 출시합니다. 원하는 경우 이전 버전의 React Native를 유지하거나 앱 바이너리를 다시 빌드 할 필요없이 새 버전으로 업그레이드 할 수 있습니다. 자신의 시간에 JavaScript를 업그레이드 할 때 걱정할 수 있습니다.
그러나 기본 모듈은 없습니다…
Expo에 대해 가장 제한적인 것은 ExpoKit을 분리하고 사용하지 않고 고유 한 고유 모듈을 추가 할 수 없다는 것입니다.
Expo XDE
콘솔 또는 exp start
콘솔 명령 출력 에서 자동으로 생성됩니다 .
expo start
QR 코드에 액세스 할 수있는 로컬 호스트의 IP 주소도 표시됩니다.
엑스포 CLI
장점 :-
1. No need to install Android studio and Xcode for start building mobile app.
2. No requirement of high configuration machine for development.
3. Mobile ui easily check on both devices android and iphone using barcode scanning.and some time you can check on online iphone and android simulators.
4. fast development.
단점 :-
1. Native dependency can not add on expo because expo project don't have ios and android folder so here expo is bounded.
2. Making apk and ipa are to difficult using expo.
3. Size of the apk/ipa is huge
네이티브 Cli 반응
장점 :-
1. Easily add native dependency for android and ios because this project structure have ios and android folder.
2. Apk and ipa build making is easy rather than expo.
Note":- React Native cli is right approach to started work on react native framework.
단점 :-
1. High configuration machine is require.
2. Adding dependency some time more difficult but good.
3. Required basic knowledge of android folder structure and ios folder structure but from this learn more things.
요구 사항에 따른 접근 방식을 선호 할 수 있습니다.
여기에서는 Expo가 구 버전의 react 16.5를 사용하고 있다는 점에 주목할 것이므로 새로운 후크 기능을 사용할 수 없습니다. Expo를 사용하기로 결정한 경우 버전 관리를 살펴보십시오. 이전 버전의 say-navigation은 이상한 오류가 발생하면 16.5 버전과 함께 사용해야합니다.
expo update
Expo에서 관리하는 대부분의 패키지에 대해 호환 가능한 버전을 얻는 데 아주 효과적입니다. 현재로서는 React Navigation을 업데이트한다고 생각하지 않지만 해당 라이브러리는 실제로 Expo에서 후원합니다. 개인적으로 React Navigation과 Expo 간의 호환성 문제는 거의 발생하지 않습니다 (베타 버전을 사용할 때 몇 가지 문제가 발생했다고 생각합니다). 그러나 Expo에서 관리하지 않는 패키지와의 호환성 문제가 더있을 수 있습니다.
박람회 및 반응 네이티브 클리닉의 장단점에 대한 답변이 완료되었습니다. 내 개인적인 경험으로 또 다른 요점을 언급하고 싶습니다. Expo에는 기본적으로 프로젝트에 많은 모듈이 포함되어 있으며 작업하기가 더 쉽습니다. 그러나 빌드 android
및 ios
버전의 크기가 크기 때문에 생산 단계에서 큰 문제가 있습니다. 예를 들어 파일 크기가 하나 인 단일 페이지가있는 'Hello World'
경우 apk
약 19 MB
입니다. react-native-cli에 동일한 프로젝트가 있으면 크기가 인 앱이 생성됩니다 6 MB
.
따라서 개인적으로 상용 앱을 개발하려면 박람회를 사용하지 않는 것이 좋습니다.
Expo에서 작동하는 1 년 이상 경험했습니다 .Exp를 사용하기에 앱의 크기가 중요하지 않은 경우 Map을 구현하기 쉽기 때문에 React-native보다 쉽지만 게시하려는 경우 프로젝트 끝에서 푸시하십시오. Google Play 또는 다른 상점의 앱을 사용하면 APK React-native에서 일부 권한을 제거해야합니다. 모든 것을 변경할 수 있지만 푸시 알림이나지도와 같은 일부 라이브러리를 가져 오려면 이러한 라이브러리를 수동으로 추가해야하기 때문에 약간의 문제가 필요합니다 안드로이드 및 iOS 프로젝트