から エキスポのウェブサイト
Expoを使うと、Web開発者はiOSとAndroidの両方で機能する真のネイティブアプリケーションを、JavaScriptで1回作成するだけで作成できます。
これはReact Nativeがしていることではありませんか?違いは何ですか?
私は万博で働いています!
Expo
でコードを書くとき、あなたはReact Native
コードを書く。 Expo
には2つの主要部分があります。
1)expo-cli
:プロジェクトの作成、ログの閲覧、あなたのデバイスでのオープン、公開などのための開発者ツール.
2)Expo
クライアント:あなたのプロジェクトの作業中にXCode
やAndroid Studio
を通さずにプロジェクトを開くことができ、また他の人にも見せてもらうことができる、携帯電話上のアプリ。 expo-cli
を通じて公開した場合、公開されたアカウントと同じアカウントにサインインしていれば、AndroidまたはiOSのExpo
クライアントを通じていつでもアクセスできます。最後に、私たちはまた、スタンドアローンのアプリケーションを構築することも可能にしているので、人々はそれを開くためにExpo
クライアントを使用する必要はなく、あなたはあなたが好きならApp StoreとPlay Storeに配ることができます。
したがって、Expo
はReact Native
の上/周囲に構築されたツールのセットです。これらのツールは、私たちがExpo
で持っている1つの重要な信念に依存しています。Javascript
に公開されているAPIの包括的なセットがあれば、ネイティブコードを書く必要なしにほとんどのアプリを構築できます。
React Native
を使えばいつでもネイティブコードにドロップできるのでこれは重要です。これは時々信じられないほど便利ですが、犠牲になります:あなたが彼らにテストしてほしいのであればあなたのバイナリをあなたのバイナリに送る必要があります。ブラウザで行うのと同じように、ワンクリックでアクセスして他の人にアクセスすることはできません。
可能であれば、Expo
を使用して、ネイティブコードに落とさないようにすることをお勧めします。前述したように、Javascript
で利用できる包括的なAPIのセットでは、これはほとんどのアプリには必要ないはずです。そのため、この包括的なAPIセットを提供し、ネイティブランタイムが共有されている世界に存在する可能性のある素晴らしいツールをすべて構築することを目指しています。
ただし、絶対にネイティブにする必要がある場合は、ExpoKit
を使用して、ネイティブプロジェクトと同じレベルの制御を行いながら、Expo
から得られるネイティブAPIを引き続き使用できます。 「ExpoKit
は、Expo
プラットフォームと既存のExpo
プロジェクトをより大きな標準のネイティブプロジェクトの一部として使用できるようにするObjective-CとJavaのライブラリです。」 もっと読む。
私は万博の従業員からの文書と答えの要約をやろうとしました:
ネイティブinitを反応させなさい:
利点:
デメリット:
万博
利点:
デメリット:
私は私が最も重要な点をまとめることができると思います。さらにポイントを追加してください。
出典: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661https://github.com/react -community/create-react-native-app/issues/516#issuecomment-373629114https://docs.expo.io/versions/latest/guides/detach.html (公式文書一般に)
これはExpoの公式文書で説明されています
Expoは、Rails for React Nativeのようなものです。たくさんのことがあなたのために用意されているので、始めるのが早く、正しい道を進んでいます。
Expoでは、XcodeやAndroid Studioは必要ありません。あなたはちょうどあなたが使い慣れているどんなテキストエディタ(Atom、vim、emacs、Sublime、VS Code、あなたが好きなものは何でも)を使ってJavaScriptを書くだけです。 Mac、Windows、およびLinux上でXDE(当社のデスクトップソフトウェア)を実行できます。
Expoが箱から出してすぐに使えるものをいくつか紹介します。
iOSとAndroidのサポート
あなたは箱から出してすぐにiOSとAndroidの両方でExpoで書かれたアプリを使うことができます。それぞれ個別にビルドプロセスを経る必要はありません。 iOSまたはAndroidのApp Storeから(またはコンピュータのシミュレータまたはエミュレータで)Expo ClientアプリケーションのExpoアプリケーションを開くだけです。
プッシュ通知
プッシュ通知は、単一の統一されたAPIを使用して、iOSとAndroidの両方ですぐに使用できます。 APNSやGCM/FCMをセットアップしたり、ZeroPushなどを設定したりする必要はありません。私たちはこれを今と同じくらい簡単にできるようにしたと思います。
Facebookログイン
自分で正しく設定するには長い時間がかかることがありますが、Expoでは10分以内に機能するはずです。
インスタントアップデート
XDEで公開をクリックするだけで、すべてのExpoアプリを数秒で更新できます。何も設定する必要はありません。それはちょうどこのように機能します。 Expoを使用していない場合は、Microsoft Code Pushを使用するか、この問題に対して独自の解決策を実行してください。
資産管理
画像、ビデオ、フォントなどはすべてExpoを使ってインターネット上で動的に配信されます。これは、それらが即時更新で機能し、その場で変更できることを意味します。 Expoに組み込まれている資産管理システムは、リポジトリ内のすべての資産をCDNにアップロードして、誰にでもすばやくロードできるようにします。
Expoがなければ、通常行うべきことはアセットをアプリにバンドルすることです。つまり、アセットを変更することはできません。あるいは、自分の資産をCDNなどに自分で管理する必要があります。
新しいReactネイティブリリースへのより簡単なアップデート
私たちは数週間ごとにExpoの新しいリリースを行います。アプリのバイナリを再構築することを心配せずに、必要に応じて古いバージョンのReact Nativeをそのまま使用することも、新しいバージョンにアップグレードすることもできます。あなたは自分の時間でJavaScriptをアップグレードすることについて心配することができます。
しかしネイティブモジュールはありません…
Expoに関して最も制限のあることは、ExpoKitを切り離して使用することなしに、あなた自身のネイティブモジュールを追加することができないということです。
Brent Vatneの答えは大丈夫ですが、詳細をいくつか追加します。
React Nativeは、箱から出してすぐに必要なJS APIをすべて提供するのではなく、最も基本的な機能だけを提供します。ネイティブネイティブの開発者は、追加のネイティブライブラリをリンクするためにAndroid Studio/XCodeを使用することが期待されています。 ExpoはRNを強化し、最も一般的なニーズに必要なすべてのJS APIを提供することを目的としています。それは基本的に、単一のlib:ExpoKitにすでにパッケージ化されている明確に定義された高品質のネイティブlibの集まりです。時々、これらのライブラリは実際にはすでにRNの世界に存在し、ExpoKitに統合されています。
使用されない多くのAPIが出荷されるため、hello worldアプリのサイズが大きくなるため、ExpoチームがすべてのライブラリをExpoKitに含めることができない(フラストレーションが生じる可能性がある)ことに注意することも重要です。ほとんどのアプリで。
他のシステム(CodePush ...)と同様に、Expoはあなたのアプリを無線でアップデートするシステムを提供します。つまり、あなたのJSバンドルをCDNにアップロードすれば、モバイルアプリは次回の起動時に自動的に新しいJSをダウンロードして使用することになります(店に出版/レビューを要求することなく)。
Expoは彼らのCDNでJSバンドルをアップロード/管理するためのCLIツールを提供します。開発のためには、CDNになり、localhostでJSバンドルをホストすることも選択できます。そしてXDEはCLIの単なる視覚的なラッパーです。
Expoクライアントは、Expoと互換性のあるアプリをロードすることを許可する一般的なクライアントです。すべてのExpoアプリはまったく同じネイティブランタイム(RN + ExpoKit)を共有しています。唯一の違いはそれらが提供するJSです。 App Storeに公開したExpoアプリには、JSバンドルのURLがハードコードされています。 Expoクライアントは特定の方法で構築されているので、QRCodeをスキャンするかURLを指定することで、どのURLからJSをロードするかを選択できます。
このクライアントはlocalhostからJSバンドルをロードして開発を容易にすることもできます。XCodeやAndroid Studioは不要で、最初のHello Worldを電話で実行するのがはるかに速くなります(数時間から数分)。あなたは実際にはMacなしでiPhone上で開発することができ、セットアップは2分かかります。
Expo SDKはアップグレードできるので、Expoクライアントには互換性レイヤーが含まれているので、最新の5つのSDKバージョンを実行することができます。
すべてのExpoアプリは同じネイティブコードを共有しているので、Expoはこれらのアプリを簡単に構築することができます。彼らはクラウド構築サービスを作成しました。
Expoによって構築されたDifferential 2アプリケーションは、アプリケーションが実行するためにJSバンドルをダウンロードすることが想定されているハードコードされたURLです。
Expoは、アプリのアイコン、向き、アクセス許可、APIキーをセットアップするための宣言的な方法の提供、プッシュ通知、プロビジョニングプロファイルのセットアップを支援するなど、他のことを行います。多くの設定はアプリのビルド時にハードコーディングする必要があります。無線で変更することはできません。
React NativeはCordovaに似ています。これは同じビューテクノロジではありませんが(ネイティブ対Webビュー)、どちらもJavaScriptからネイティブ機能を制御でき、開発者が新しいJS /ネイティブバインディングを簡単に追加できるように、どちらもプラグインシステムを提供します。
PhoneGapはExpoに似ています。どちらも、事前定義された追加のネイティブプラグインのセットを使用して、それらが構築されている基盤となるプラットフォームの生のAPIを強化しようとします。 PhoneGapは build service と generic client を提供しています。これらは承認されたプラグインを使用している限り動作します。
ご覧のとおり、万博は道具としてのセットです。最後にそれはあなたのモバイルプロジェクトを簡単に開発し、共有し、そして店舗に公開することを可能にする。これはPhoneGapのエクスペリエンスと非常によく似ています(ただし、はるかに優れていて混乱が少ないです)。
私は、以下の2つの場合を除いて、新しいReact Nativeのグリーンフィールドプロジェクトには必ずExpoをお勧めします。
Expoとreact-native-cliの長所と短所に関する答えは完全です。私の個人的な経験として別のポイントに言及したいと思います。 Expoにはプロジェクトのデフォルトで多くのモジュールが含まれており、作業が簡単になります。しかし、ビルドされたAndroid
とios
のバージョンは非常に大きいため、生産段階で大きな問題があります。たとえば、'Hello World'
を持つ単一のページがある場合、apk
ファイルサイズは約19 MB
になります。 react-native-cliに同じプロジェクトがあると、サイズが6 MB
のアプリになります。
ですから、個人的には、商用アプリを開発したい場合、expoの使用はお勧めしません。
エキスポCLI賛成論: - 1。モバイルアプリの構築を開始するためのAndroidスタジオとXcodeをインストールする必要はありません。開発のための高い構成機械の必要条件がない。 3.モバイルUIは、バーコードscanning.andを使用して、AndroidとiPhoneの両方のデバイスを簡単にチェックできます。また、いつでもオンラインのiPhoneとAndroidのシミュレータをチェックできます。速い開発。短所: - 1。ネイティブの依存関係は、博覧会のプロジェクトは、IOSとAndroidのフォルダを持っていないので博覧会に追加することはできませんので、ここで博覧会は制限されています。 APKとIPAを作ることは博覧会を使用することは困難です。 React Native Cli
長所: - 1.このプロジェクト構造にはiOSとAndroidフォルダーがあるため、AndroidとiOSのネイティブ依存関係を簡単に追加できます。 2. APKとIPAのビルドはエキスポよりも簡単です。注:: - React Native cliは、反応ネイティブフレームワークで作業を開始するための正しいアプローチです。短所: - 1.高度な設定マシンが必要です。 iosフォルダ構造ですが、これからもっと学ぶことができます。
あなたはあなたの要求に応じてどんなアプローチを選ぶこともできます。
私はここでExpoがreact 16.5の古いバージョンを使用していることに注意してください。あなたがExpoと一緒に行くことにした場合、あなたのバージョン管理を見ることに注意してください。あなたが奇妙なエラーを得ているならばsay反応ナビゲーションのより古いバージョンは16.5バージョンで使用される必要があるでしょう。