web-dev-qa-db-ja.com

ReactネイティブJavaScriptをJavaにネイティブコンパイルしますか?

React Nativeでハイブリッドアプリを開発するとき。作成するJavaScriptコードは、ReactネイティブコードからAndroidアプリを作成するときに、Dalvik/ARTランタイムのJavaコードまたはJavaバイトコードに変換されますか?または、UIコンポーネントだけがネイティブUIコンポーネントにコンパイルされていますか?または、Fetch APIのようなライブラリはJavaScriptコードをJavaコードまたはJavaバイトコードにコンパイルしますか?

42
unlimited101

基本的に、Javascriptを作成します。 Javascriptは、ネイティブコンポーネント(AndroidのJava、iOSのObjective C、WindowsのC#)と通信します。

通信は、いわゆる「ブリッジ」を介して行われます。この通信により速度が低下しすぎると感じた場合は、JavaをJava、Objective C、またはC#にそれぞれ実装して、純粋にネイティブで実行できます。この場合、ネイティブコードで直接記述しているため、ネイティブコンパイルにJavascriptはありません。

これにより、パフォーマンスの互換性が犠牲になります。通常、これは必要ありません。

61
Marc

コードはJavaScriptネイティブコードのままであり、他の形式に変換されません。ハイブリッドアプリは、JavaScriptコードの実行を処理するJavaScriptランタイムエンジンを呼び出すネイティブコンテナーアプリ内で実行されます。これで質問が明確になることを願っています。

19
Gurdev Singh

「React Made Native Easy」 本に基づく:

基本的に、React NativeはReactコンポーネントのセットと見なすことができ、各コンポーネントは対応するネイティブビューとコンポーネントを表します。

また、Reactネイティブアーキテクチャには2つの部分があります。

  1. ネイティブコード/モジュール:iOSの場合のネイティブコードのほとんどはObjective CまたはSwiftで記述されていますが、Androidの場合Javaで書かれています。しかし、Reactネイティブアプリを記述するために、iOSまたはAndroidのネイティブコードを記述する必要はほとんどありません。

  2. Javascript VM:すべてのJavaScriptコードを実行するJS仮想マシン。 iOS/AndroidシミュレーターおよびデバイスReact Nativeでは、Safariを駆動するJavaScriptエンジンであるJavaScriptCoreを使用します。 JavaScriptCoreは、もともとWebKit用に構築されたオープンソースのJavaScriptエンジンです。 iOSの場合、React NativeはiOSプラットフォームが提供するJavaScriptCoreを使用します。これは、OS X MavericksとともにiOS 7で初めて導入されました。

そして、これらの部分間の通信のために:

React Nativeブリッジ:React Nativeブリッジは、ネイティブスレッドとJavascriptスレッド間の通信を担当するC++/Javaブリッジです。メッセージの受け渡しにはカスタムプロトコルが使用されます。

5
Morteza Ziyae

reat nativeはラッパーとして機能します。たとえば、レイアウトにボタンを配置する場合は、ボタンタグをレイアウトに配置するだけですが、このボタンはnative Android buttonから取得し、UIから特定のAPIを使用するだけです反応ネイティブと呼ばれるモジュール:カスタムネイティブモジュールを作成し、それを反応ネイティブプロジェクトで簡単に使用できます。

0
N.SH