에서 엑스포 웹 사이트
Expo를 사용하면 웹 개발자가 JavaScript로 한 번만 작성하여 iOS와 Android에서 작동하는 진정한 기본 앱을 구축 할 수 있습니다.
이것이 React Native의 기능이 아닙니까? 차이점이 뭐야?
답변
나는 엑스포에서 일한다!
코드를 작성할 때 코드 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 직원의 문서 및 답변 요약을 수행하려고했습니다.
네이티브 초기화 반응 :
장점 :
- Java / Objective-C로 작성된 기본 모듈을 추가 할 수 있습니다 (아마 유일하지만 가장 강력한 모듈).
단점 :
- 프로젝트를 실행하려면 Android Studio 및 XCode가 필요합니다.
- Mac이 없으면 iOS 용으로 개발할 수 없습니다
- 테스트를 위해 장치를 사용하려면 USB를 통해 장치를 연결해야합니다.
- XCode에서 글꼴을 수동으로 가져와야합니다.
- 앱을 공유하려면 전체 .apk / .ipa 파일을 보내야합니다.
- Push-Notifications, Asset Manager와 같은 JS API를 기본적으로 제공하지 않습니다. 예를 들어 수동으로 설치하고 npm과 연결해야합니다.
- 작업 프로젝트를 올바르게 설정 (장치 구성 포함)하는 것은 다소 복잡하며 시간이 걸릴 수 있습니다
엑스포
장점 :
- 프로젝트 설정은 쉽고 몇 분 안에 완료 할 수 있습니다
- 작업하는 동안 자신과 다른 사람들이 프로젝트를 열 수 있습니다.
- QR 코드 또는 링크를 통해 앱을 쉽게 공유 할 수 있으므로 전체 .apk 또는 .ipa 파일을 보낼 필요가 없습니다.
- 앱을 실행하기 위해 빌드 할 필요가 없습니다.
- 표준 프로젝트에 일부 기본 라이브러리를 통합합니다 (Push Notifications, Asset Manager 등).
- ExpoKit으로 추출하고 일부 Expo 기능을 계속 사용하여 원시 코드를 통합 할 수 있습니다.
- Expo는 .apk 및 .ipa 파일을 빌드 할 수 있습니다 (Expo로 가능한 상점에 배포)
단점 :
- 네이티브 모듈을 추가 할 수 없습니다 (아마 일부는 게임 체인저)
- Objective-C / Java에서 기본 코드를 사용하는 라이브러리를 사용할 수 없습니다
- 표준 Hello World 앱의 크기는 약 25MB입니다 (통합 라이브러리로 인해).
- FaceDetector, ARKit 또는 Payments를 사용하려면 ExpoKit으로 꺼내야합니다.
- ExpoKit으로 추출하면 Expo의 기능이 상충됩니다. 예를 들어 QR 코드를 통해 공유 할 수 없습니다
- ExpoKit으로 배출 할 때 해당 시점에 ExpoKit에서 지원하는 반응 기본 버전으로 제한됩니다
- ExpoKit (기본 모듈 사용)에서의 디버깅은 두 가지 언어와 다른 라이브러리를 혼합하기 때문에 훨씬 더 복잡합니다 (공식 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의 대답은 괜찮지 만 세부 사항을 추가하고 싶습니다.
Expo, React Native의 API 영역 확장
React Native는 필요한 모든 JS API를 제공하지는 않지만 대부분의 기본 기능 만 제공합니다. React Native 개발자는 Android Studio / XCode를 사용하여 추가 네이티브 라이브러리를 연결해야합니다. Expo는 RN을 향상시키고 가장 일반적인 요구에 필요한 모든 JS API를 제공하는 것을 목표로합니다. 기본적으로 ExpoKit이라는 단일 라이브러리에 이미 패키지 된 잘 정의 된 고품질 네이티브 라이브러리 세트입니다. 때때로 이러한 라이브러리는 실제로 RN 세계에 이미 존재하며 ExpoKit에 통합되어 있습니다.
또한 Expo 팀은 사용되지 않는 많은 API를 제공하기 때문에 hello world 앱 크기가 커질 수 있기 때문에 ExpoKit에 모든 lib를 포함시킬 수는 없습니다. 대부분의 앱에서.
Expo는 무선 JS 업데이트를 제공합니다
다른 시스템 (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 키를 설정하는 선언적 방법 제공, 푸시 알림 설정 지원, 프로파일 프로비저닝 등 많은 다른 작업을 수행합니다. 앱에서 빌드 타임에 많은 설정을 하드 코딩해야하며 공중에서 바꾸지 마십시오.
엑스포는 Phonegap이 Cordova에 대해 네이티브 인 것입니다.
반응 네이티브는 비슷한 코르도바입니다. 동일한 뷰 기술 (네이티브 대 웹뷰)은 아니지만 자바 스크립트에서 기본 기능을 제어 할 수 있으며 개발자가 새로운 JS / 네이티브 바인딩을 쉽게 추가 할 수 있도록 플러그인 시스템을 제공합니다.
PhoneGap은 Expo와 유사합니다. 둘 다 사전 정의 된 추가 기본 플러그인 세트로 빌드 한 기본 플랫폼의 원시 API를 보강하려고합니다. PhoneGap은 빌드 서비스를 제공 하며 일반 클라이언트가 있습니다. 승인 된 플러그인을 사용하는 한 작동 를 있습니다.
결론
보다시피 Expo는 도구 세트입니다. 결국 모바일 프로젝트를 상점에 쉽게 개발, 공유 및 게시 할 수 있습니다. PhoneGap 환경과 매우 유사하지만 혼동이 적습니다.
다음 두 경우를 제외하고는 새로운 React Native 그린 필드 프로젝트에 Expo를 추천 할 것입니다.
- 이미 엑스포에서 사용할 수 없으며 곧 출시되지 않을 API가 필요하다는 것을 이미 알고 있습니다
- 앱 크기에 대해 많은 관심을 기울입니다 (HelloWorld는 ExpoKit의 큰 크기로 인해 25MB 이상이지만 그 후에 JS 일뿐이므로 크게 증가하지는 않습니다)
답변
공식 엑스포 문서에 설명되어 있습니다.
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을 분리하고 사용하지 않고 고유 한 고유 모듈을 추가 할 수 없다는 것입니다.
답변
엑스포 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에는 기본적으로 프로젝트에 많은 모듈이 포함되어 있으며 작업하기가 더 쉽습니다. 그러나 빌드 android
및 ios
버전의 크기가 크기 때문에 생산 단계에서 큰 문제가 있습니다. 예를 들어 파일 크기가 하나 인 단일 페이지가있는 'Hello World'
경우 apk
약 19 MB
입니다. react-native-cli에 동일한 프로젝트가 있으면 크기가 인 앱이 생성됩니다 6 MB
.
따라서 개인적으로 상용 앱을 개발하려면 박람회를 사용하지 않는 것이 좋습니다.