Expoを使用すると、Web開発者は、iOSとAndroidの両方で機能する真にネイティブなアプリを、JavaScriptで一度だけ作成することで構築できます。
これはReact Nativeが行うことではありませんか?違いは何ですか?
Expoを使用すると、Web開発者は、iOSとAndroidの両方で機能する真にネイティブなアプリを、JavaScriptで一度だけ作成することで構築できます。
これはReact Nativeが行うことではありませんか?違いは何ですか?
回答:
Expoで働いています!
あなたがコードを書くとき、あなたはコードExpo
を書きReact Native
ます。Expo
2つの主要な部分があります。
1)expo-cli
:プロジェクトの作成、ログの表示、デバイスでのオープン、公開などのための開発者ツール。
2)Expo
クライアント:XCode
またはを経由せずにプロジェクトの作業中にプロジェクトを開くことがAndroid Studio
でき、他の人にもプロジェクトを表示できる携帯電話のアプリ!また、を介して公開するとexpo-cli
、公開Expo
されたのと同じアカウントにサインインしていれば、AndroidまたはiOSのクライアントを介していつでもアクセスできます。最後に、スタンドアロンアプリを構築することもできるので、Expo
クライアントを使用して開く必要がなくなり、必要に応じてアプリストアやPlayストアに配布できます。
ですから、Expo
は/の上に構築されたツールのセットですReact Native
。これらのツールは、私たちが保持している1つの重要な信念に依存しExpo
ていますJavascript
。に公開されている包括的なAPIセットがあれば、ネイティブコードを記述することなく、ほとんどのアプリを構築できます。
React Native
常にネイティブコードにドロップできるため、これは重要です。これは非常に役立つ場合がありますが、コストがかかります。バイナリをテストする場合は、バイナリを送信する必要があります。世界の反対側にいる人は、作業中にリンクをタップするだけでは開けません。ブラウザで行うのと同じように、ワンクリックで公開するだけで、誰かがアクセスできるようにすることはできません。
ではExpo
、可能であれば、ネイティブコードにドロップダウンしないようにすることをお勧めします。上で述べたように、APIの包括的なセットがで利用可能になっているJavascript
ので、ほとんどのアプリでこれは必要ないはずです。したがって、この包括的なAPIセットを提供し、ネイティブランタイムが共有されている世界に存在できるすばらしいツールをすべて構築することを目指しています。
ただし、絶対にネイティブに落とす必要がある場合は、を使用ExpoKit
して、Expo
ネイティブプロジェクトと同じレベルの制御を維持しながら、ネイティブAPIを引き続き使用できます。" ExpoKit
は、より大きな標準ネイティブプロジェクトの一部としてExpo
プラットフォームと既存のExpo
プロジェクトを使用できるようにするObjective-CおよびJavaライブラリです。" 詳細はこちら。
ドキュメントの概要とExpoの従業員からの回答を試みました。
React Native init:
利点:
短所:
万博
利点:
短所:
最も重要な点を要約できるといいのですが。ポイントを追加してください。
ソース: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を提供することを目的としています。これは基本的に、1つのライブラリExpoKitにパッケージ化された、明確に定義された品質のネイティブライブラリのセットです。これらのライブラリは、実際にはRNの世界にすでに存在し、ExpoKitに統合されている場合があります。
また、Hello Worldアプリのサイズが大きくなるため、ExpoKitにすべてのライブラリを含めることはできません(これにより、フラストレーションが生じる可能性があります)。ほとんどのアプリで。
他のシステム(CodePush ...)と同様に、Expoはアプリを無線で更新するシステムを提供します。これは、CDSに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を選択できます。
このクライアントは、localhostからJSバンドルを読み込むこともでき、開発エクスペリエンスをより簡単にすることができます。XCodeやAndroid Studioが必要なく、最初のHello Worldを電話で実行する方がはるかに高速になります(数時間から数分)。Macがなくても実際にiPhoneで開発でき、セットアップには2分かかります。
Expo SDKはアップグレードできるため、Expoクライアントには互換性レイヤーが含まれているため、最新の5つのSDKバージョンを実行できます。
すべてのExpoアプリは同じネイティブコードを共有しているため、Expoはこれらのアプリを簡単に構築できます。彼らはクラウド構築サービスを作成しました。
Expoによって作成された2つのアプリを差別化する主なものは、アプリが実行するJSバンドルをダウンロードすることになっているハードコードされたURLだけです。
Expoは他にもいくつかのことを行います。たとえば、アプリアイコン、向き、権限、APIキーをセットアップする宣言的な方法を提供したり、プッシュ通知のセットアップを支援したり、プロファイルをプロビジョニングしたりします。多くの設定は、アプリのビルド時にハードコーディングする必要があり、無線で変更しないでください。
React NativeはCordovaに似ています。これは同じビューテクノロジー(ネイティブvs Webビュー)ではありませんが、どちらもJavaScriptからネイティブ機能を制御でき、どちらもプラグインシステムを提供するため、開発者は新しいJS /ネイティブバインディングを簡単に追加できます。
PhoneGapはExpoに似ています。両方とも、事前定義された追加のネイティブプラグインのセットを使用して、基盤となるプラットフォームのraw APIを強化しようとします。PhoneGapはビルドサービスも提供し、承認されたプラグインを使用している限り機能する汎用クライアントを備えています。
ご覧のとおり、Expoはツールのセットです。最後に、モバイルプロジェクトを簡単に開発、共有、およびストアに公開することができます。これは、PhoneGapのエクスペリエンスとよく似ています(ただし、混乱が少なく、はるかに優れています)。
以下の2つの場合を除いて、新しいReact NativeグリーンフィールドプロジェクトにはExpoをお勧めします。
Expoの公式ドキュメントで説明されています
ExpoはRails for React Nativeのようなものです。多くの設定が済んでいるので、すぐに始めて正しい道を進むことができます。
Expoでは、XcodeやAndroid Studioは必要ありません。JavaScriptは、使い慣れたテキストエディター(Atom、vim、emacs、Sublime、VS Codeなど)を使用して作成するだけです。Mac、Windows、LinuxでXDE(デスクトップソフトウェア)を実行できます。
Expoですぐに使える機能のいくつかを次に示します。
iOSおよびAndroidのサポート
Expoで記述されたアプリは、そのままiOSとAndroidの両方で使用できます。それぞれについて個別のビルドプロセスを実行する必要はありません。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にアップロードするので、誰でも簡単にロードできます。
Expoがない場合、通常行うことは、アセットをアプリにバンドルすることです。つまり、アセットを変更することはできません。または、自分でアセットをCDNまたは類似のものに配置することを管理する必要があります。
新しいReactネイティブリリースへの更新がより簡単に
Expoの新しいリリースは数週間ごとに行われます。アプリバイナリの再構築について心配することなく、必要に応じて古いバージョンのReact Nativeをそのまま使用することも、新しいバージョンにアップグレードすることもできます。自分の時間にJavaScriptをアップグレードすることについて心配することができます。
しかし、ネイティブモジュールはありません…
Expoの最も制限的なことは、ExpoKitを切り離して使用しないと、独自のネイティブモジュールを追加できないことです。
Expo XDE
コンソールまたはexp start
コンソールコマンド出力で自動的に生成されます。
EXPO 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
React Native 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 react-navigationの古いバージョンを16.5バージョンで使用する必要があります。
expo update
Expoが管理するほとんどのパッケージの互換性のあるバージョンを取得するのにかなり優れています。現時点では、React Navigationを更新するとは思わないが、そのライブラリはExpoが実際に提供している。個人的には、React NavigationとExpoの間で互換性の問題に遭遇することはめったにありません(ベータ版を使用するときにいくつかの問題が発生したと思います)。ただし、Expoで管理されていないパッケージとの互換性の問題がさらに発生する場合があります。
expoとreact-native-cliの長所と短所に関する答えは完全です。私の個人的な経験として別の点を述べたいと思います。Expoには、デフォルトでプロジェクト内に多くのモジュールが含まれており、それを使って作業するのが簡単になります。ただし、ビルドandroid
とios
バージョンのサイズが非常に大きいため、生産段階では大きな問題があります。たとえば'Hello World'
、apk
ファイルが1つのページの場合、ファイルサイズは約になり19 MB
ます。同じプロジェクトがreact-native-cliにあると、アプリのサイズはになり6 MB
ます。
個人的には、商用アプリを開発したい場合は、expoの使用はお勧めしません。
Expoで動作する1年以上の経験があります。マップの実装は簡単なので、アプリのサイズがExpoを使用する上で重要でない場合は、Reactネイティブよりも簡単にプッシュできますが、プロジェクトの最後に公開したい場合Google Playまたは別のストアのアプリでは、APK Reactネイティブの一部の権限を削除する必要がありますが、すべてを変更できますが、プッシュ通知やマップなどの一部のライブラリをインポートするには、これらのライブラリを手動で追加する必要があるため、いくつかの課題も必要ですAndroidおよびiOSプロジェクト