web-dev-qa-db-ja.com

ReactネイティブでJavaScriptをiOSで実行できるようにするためのネイティブ使用とAndroidネイティブ?

React iOSおよびAndroidとのインターフェースでのネイティブ使用?CordovaはWebViewを使用してネイティブコンテナー内にWebページを効果的に表示します; Does Reactネイティブも同じアプローチを使用しますか?そうでない場合、どのアプローチを使用しますか?

31
kharandziuk

お気づきのとおりReact NativeはCordovaに基づいていません。これは、WebViewにシャベルされたアプリのように見えるWebサイトではありません。

React NativeはJavaScriptランタイムを使用しますが、UIはHTMLではなく、WebViewを使用しません。 UIを定義するには、JSXとReactネイティブ固有のコンポーネントを使用します。

ネイティブレベルのパフォーマンスとルックアンドフィールを提供しますが、一部のUIパーツはiOSとAndroid用に個別に構成する必要があります。たとえば、ツールバーはまったく異なりますが、TextInputは両方のオペレーティングシステムで同じにすることができます。

13
AMilassin

IOSシミュレーターおよびデバイスでは、AndroidエミュレーターおよびデバイスReactネイティブ使用JavaScriptCoreこれは、Safariを駆動するJavaScriptエンジンです ソース

8
Manish Patwari

Javascriptコードを実行するには

React Nativeは、Android/iOSシミュレーターおよびデバイスでJavaScriptCore(Safariを駆動するJavaScriptエンジン)を使用します。

Androidの場合、React NativeはアプリケーションとともにJavaScriptCoreをバンドルします。

IOSの場合、React NativeはiOSプラットフォームが提供するJavaScriptCoreを使用します。

Android/iOSと通信するには

React Nativeブリッジ(C++/Javaブリッジ)が使用されます。ネイティブスレッドとJavascriptスレッド間の通信を担当します。

ほとんどの場合、開発者はReactネイティブアプリケーションをJavascriptで記述します。アプリケーションを実行するには、次のコマンドのいずれかがCLIを介して発行されます-react-native run-iosまたはreact-native run-Android。この時点で、React Native CLIは、JSコードを単一のmain.bundle.jsファイルにバンドルするノードパッケージャー/バンドラーを生成します。パッケージャーは、 Webpack。Reactネイティブアプリが起動されるたびに、ロードされる最初の項目はネイティブエントリポイントです。ネイティブスレッドはJS VMスレッドを生成しますバンドルされたJSコードを実行するJSコードには、アプリケーションのすべてのビジネスロジックがありますネイティブスレッドは、RNブリッジを介してメッセージを送信してJSアプリケーションを開始します。 RNブリッジ:命令には、ロードするビュー、ハードウェアから取得する情報などが含まれます Source

4
an0nym0us