엑스포와 네이티브 네이티브의 차이점은 무엇입니까?


답변:


209

나는 엑스포에서 일한다!

코드를 작성할 때 코드 Expo를 작성 React Native하십시오. Expo두 가지 주요 부분이 있습니다.

1) expo-cli: 프로젝트 생성, 로그보기, 장치 열기, 게시 등을위한 개발자 도구

2) Expo클라이언트 : 통과 할 필요없이, 당신은 당신이 그들에 작업하는 동안 프로젝트를 열 수 있습니다 휴대 전화 응용 프로그램 XCode또는 Android Studio도하고, 다른 사람들이 너무 그들을 볼 수 있습니다! 를 통해 게시하면 사용자는 게시 된 동일한 계정으로 로그인 한 경우 Android 또는 iOS expo-cliExpo클라이언트를 통해 언제든지 액세스 할 수 있습니다 . 또한, 독립형 앱을 구축하여 사람들이 Expo클라이언트를 사용하여 앱 을 열 필요가 없으며 원하는 경우 앱 스토어에 배포하고 재생할 수 있습니다.

따라서 Expo/ around 위에 빌드 된 도구 세트입니다 React Native. 이러한 툴은 우리가 보유하고있는 하나의 주요 신념에 의존 Expo합니다. 포괄적 인 API 세트가 노출되어있는 경우 기본 코드를 작성할 필요없이 대부분의 앱을 빌드 할 수 있습니다 Javascript.

이것은 React Native항상 네이티브 코드로 드롭 다운 할 수 있기 때문에 중요 합니다. 이것은 때때로 굉장히 도움이되지만 비용이 듭니다. 테스트를 원한다면 사람들에게 바이너리를 보내야합니다. 다른쪽에있는 누군가는 작업하는 동안 링크를 탭할 수 없습니다. 한 번의 클릭으로 누군가가 브라우저에서와 비슷한 방식으로 액세스 할 수 있도록 게시 할 수는 없습니다.

를 사용 Expo하면 가능한 경우 기본 코드로 넘어 가지 않도록하십시오. 위에서 언급했듯이에 사용할 수있는 포괄적 인 API 세트가 Javascript있으면 대부분의 앱에는 필요하지 않을 것입니다. 따라서이 포괄적 인 API 세트를 제공 한 다음 기본 런타임이 공유되는 세계에 존재할 수있는 모든 멋진 툴링을 구축하는 것을 목표로합니다.

그러나 네이티브로 절대 드롭 다운 해야하는 경우 네이티브 프로젝트에서와 동일한 수준의 제어 ExpoKitExpo제공하면서 네이티브 API를 계속 사용할 수 있습니다 . " ExpoKit는 더 큰 표준 네이티브 프로젝트의 일부로 Expo플랫폼 및 기존 Expo프로젝트 를 사용할 수있는 Objective-C 및 Java 라이브러리입니다 ." 자세한 내용은 여기를 참조하십시오.


5
"Exponent를 사용하면 기본 코드로 드롭 다운 할 수 없습니다". 네이티브 코드로 넘어 가지 않아도된다는 것을 아는 것이 좋지만, 필요한 경우 Exponent가 왜 그렇게하지 못하게합니까?
오토

3
아 나는 그것이 어떻게 불분명했는지 알 수 있습니다. 따라서 Exponent 클라이언트는 완전 오픈 소스 ( github.com/exponentjs/exponent ) 이므로 원하는 경우 기본 코드를 작성할 수 있지만 Exponent 라이브러리는 일반적인 React Native의 기본 모듈 모음으로 효과적으로 처리합니다. 앱. 이것은 완전히 괜찮으며 프로젝트를 오픈 소스로 만드는 동기가되었습니다. 즉, 툴링 (앱 바이너리 빌더, 앱 / 플레이 스토어의 Exponent 클라이언트를 사용하여 테스트 빌드, 내장 푸시 알림 등)을 사용하려면 네이티브 코드를 작성할 수 없습니다.
brentvatne

글을 쓰는 시점에서 Expo는 유용한 기본 플러그인을 통합하여 꽤 좋아졌습니다. 그러나 그들은 IAP를위한 MAJOR 플러그인 통합이 부족하며 그것 없이는 앱에서 돈을 벌 수 없습니다! 그리고 당신은, 내가 이익을 만들 수없는 경우 응용 프로그램을 만드는 포인트는 무엇입니까 물어!
아담

97

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 (일반적인 공식 문서)


1
장점과 단점의 명확한 그림을 위해 @BenjaminHeinke에게 감사합니다. 반응 형 네이티브 앱에 엑스포를 채택하기로 한 결정으로 이미 단점 # 2가 발생했습니다. 이 때문에 Appsee와 통합 할 수 없습니다. 이에 대한 해결 방법이 없습니까?
CoolDocMan

2
테스트를 위해 장치를 USB에 연결할 필요는 없으며 첫 번째 컴파일 및 설치 만 USB를 통해 수행해야합니다. 나중에 Wi-Fi를 사용할 수 있습니다! 그래도 네이티브로 변경하면 다시 컴파일해야합니다.
rszalski

30

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 일뿐이므로 크게 증가하지는 않습니다)

1
API 엑스포가 지원하지 않는 목록을 찾으려고합니다. 어디서 찾을 수 있는지 아는 사람이 있습니까?
ronnyrr

@ronnyrr Expo는 JS가 아니며 원시 RN 및 ExpoKit에 포함되지 않은 모든 것을 지원하지 않습니다. Expo가 지원하지 않는 기능 목록에는 존재하지 않습니다. Expo가 지원하는 기능 목록에 포함되어 있지 않기 때문입니다. 당신이 요구하는 것은 존재할 수 없습니다.
Sebastien Lorber

2
@ronnyrr 나는 이것이 당신이 찾고있는 것이라고 생각합니다 : expo.canny.io 그것은 당신이 인기순으로 정렬 할 수있는 기능 요청의 목록입니다
Evan Bacon

26

공식 엑스포 문서에 설명되어 있습니다.

엑스포와 네이티브 네이티브의 차이점은 무엇입니까?

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을 분리하고 사용하지 않고 고유 한 고유 모듈을 추가 할 수 없다는 것입니다.


2
Windows 8에서 엑스포를 사용하고 있습니다. QR 코드를 생성하여 장치에서 직접 앱을 실행하는 방법.
Prasanna

1
Windows에서는 시도하지 않았지만 모든 시스템에서 비슷해야한다고 생각합니다. QR 코드는 Expo XDE콘솔 또는 exp start콘솔 명령 출력 에서 자동으로 생성됩니다 .
gumkins

1
$ prasanna 전화와 개발 기기가 같은 네트워크에 없기 때문에 QR 코드가 표시되지 않는 경우가 있습니다. 예를 들어, 집에서 일하는 경우 전화가 홈 네트워크에 있는지 확인하십시오. 그리고 등 ...
ccalvert

expo startQR 코드에 액세스 할 수있는 로컬 호스트의 IP 주소도 표시됩니다.
Jordan Simba

7

엑스포 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.

요구 사항에 따른 접근 방식을 선호 할 수 있습니다.


2

여기에서는 Expo가 구 버전의 react 16.5를 사용하고 있다는 점에 주목할 것이므로 새로운 후크 기능을 사용할 수 없습니다. Expo를 사용하기로 결정한 경우 버전 관리를 살펴보십시오. 이전 버전의 say-navigation은 이상한 오류가 발생하면 16.5 버전과 함께 사용해야합니다.


expo updateExpo에서 관리하는 대부분의 패키지에 대해 호환 가능한 버전을 얻는 데 아주 효과적입니다. 현재로서는 React Navigation을 업데이트한다고 생각하지 않지만 해당 라이브러리는 실제로 Expo에서 후원합니다. 개인적으로 React Navigation과 Expo 간의 호환성 문제는 거의 발생하지 않습니다 (베타 버전을 사용할 때 몇 가지 문제가 발생했다고 생각합니다). 그러나 Expo에서 관리하지 않는 패키지와의 호환성 문제가 더있을 수 있습니다.
기독교 Juth

2

박람회 및 반응 네이티브 클리닉의 장단점에 대한 답변이 완료되었습니다. 내 개인적인 경험으로 또 다른 요점을 언급하고 싶습니다. Expo에는 기본적으로 프로젝트에 많은 모듈이 포함되어 있으며 작업하기가 더 쉽습니다. 그러나 빌드 androidios버전의 크기가 크기 때문에 생산 단계에서 큰 문제가 있습니다. 예를 들어 파일 크기가 하나 인 단일 페이지가있는 'Hello World'경우 apk19 MB입니다. react-native-cli에 동일한 프로젝트가 있으면 크기가 인 앱이 생성됩니다 6 MB.

따라서 개인적으로 상용 앱을 개발하려면 박람회를 사용하지 않는 것이 좋습니다.


나는 이것이 엑스포 앱이 프로덕션 준비되지 않은 충분한 이유라고 생각하지 않습니다. 게다가 이것은 이전 답변에 의해 철저히 설명되었습니다
Dawoodjee

1

Expo에서 작동하는 1 년 이상 경험했습니다 .Exp를 사용하기에 앱의 크기가 중요하지 않은 경우 Map을 구현하기 쉽기 때문에 React-native보다 쉽지만 게시하려는 경우 프로젝트 끝에서 푸시하십시오. Google Play 또는 다른 상점의 앱을 사용하면 APK React-native에서 일부 권한을 제거해야합니다. 모든 것을 변경할 수 있지만 푸시 알림이나지도와 같은 일부 라이브러리를 가져 오려면 이러한 라이브러리를 수동으로 추가해야하기 때문에 약간의 문제가 필요합니다 안드로이드 및 iOS 프로젝트


-1

expo는 앱을 빠르게 시작할 수 있도록 React Native를 중심으로 구축 된 툴체인입니다. React Native 앱과 인터페이스 및 서비스의 개발 및 테스트를 단순화하는 툴 세트를 제공합니다. Expo를 사용하면 Expo SDK에서 모든 것을 찾을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.