2017-01-23 9 views
4

私はまだReact Nativeの仕組みに非常に混乱しています。たぶん私はモバイル開発(私はネイティブのAndroidを1回または2回試みたが)にまともな背景を持っていないため。「ネイティブ」とは何か、ネイティブプロジェクトにはないものは何ですか?

もし私が間違っていないなら、PhonegapやIonicのようなハイブリッドフレームワークはプロジェクト全体(またはそのほとんど)を 'WebView'で動かすでしょうか?

React Nativeなどのネイティブフレームワークは、純粋なWebテクノロジではなくネイティブリソースを使用することを意図しています。

しかし、私たちはまだJavascriptを書いており、React Nativeは仕事をすばやく行っているので、私たちが書き込んだJavascriptをまだ使用しています(つまり、解析していない、ネイティブコードに変換して再コンパイルしています)。

私の頭に浮かぶ質問は、正確にネイティブリソースとは何か、そしてReact Nativeプロジェクトにはないものですか? 「webview」ではなく、実行しているJavaScriptはどこにありますか? Objective-CへのJavascriptと両方のプラットフォームでのJavaのインタフェースを作成するネイティブライブラリがありますか?ウェブソリューションでは、WebViewにコード全体を挿入するだけですか?

その他の質問:React Nativeはさまざまなプラットフォーム用に1つのコードを記述したという理由だけで、React Nativeをハイブリッドフレームワークと見なすことができますか、それとも正しい用語ではありませんか?

答えて

5

を生成するようあなたは、私が間違っていないよ場合は、PhoneGapのか、イオンなどのハイブリッドフレームワークは、プロジェクト全体(またはそのほとんどを)実行するコードとして扱うと言うことができますWebView '、間違っていますか?

はい。フレームワークの一部としてPhoneGap(実際にはCordova)を使用するPhonegapとIonicは、UIをレンダリングするためにHTML、CSS、およびJavaScriptを使用します。その外の唯一の接続(私が知る限り)は、CordovaがデバイスのネイティブAPIに提供するアクセスです(センサーを考えるなど)。そのようなネイティブに反応などのネイティブなフレームワークではなく、純粋にウェブ技術のネイティブリソースを使用することを意図しているのに対し

はい、RNのアプローチは、ネイティブ開発(パフォーマンス、感触など)の利点を保持しながら、JavaScriptとReactフレームワークを使用できるようにすることです。

しかし、我々はまだJavascriptを書き、ネイティブがこんなに早く、それはおそらくまだ私たちは(私が意味する、それがネイティブコードと再コンパイルに変換し、解析していない)を書いたJavascriptを使用している仕事をしていません反応します。あなたが考えるする必要がまだのiOS /アンドロイド/ WindowsのネイティブAPIとコードのJavaScriptの部分に依存しているネイティブアプリケーション間の「橋」としてネイティブリアクト:私はあなたの誤解があると思うのはここ

です。このブリッジは、JSにそのようなAPIへのアクセスを許可し、UIのレンダリングと他のさまざまなネイティブ・アスペクトや、逆方向(ネイティブからJSへ)のデータの提供に関心を持ちます。 JSコードはJavaやSwift/Obj-Cと言うことは決して「変換」されません。それはあなたがそれをプログラムするのと同じ方法で実行されます。しかし、JavaScriptからネイティブコンポーネントを使用するようにRNに依頼する可能性があります(たとえば、<Text>はiOSでUILabelをインスタンス化します)。ライブラリは、レイアウト、ビュー、コントロールなどのいくつかのコンポーネントでこのアプローチを実装しますが、本質的な点は説明どおりです。

私の心には、正確にはネイティブリソースとは何か、そしてReact Nativeプロジェクトにはないものがありますか?

だから基本的にJavaScriptで書かれたものはネイティブではありませんが、実行するとネイティブコンポーネントが得られます。ネイティブAPIを使用して直接プログラミングするもの(RNの強みの1つで、ネイティブに開発したり、ネイティブコンポーネントがライブラリに実装されていない場合でもネイティブに開発できます)は、「ネイティブ」とみなすことができます。

私たちが 'webview'に載っていない場合に実行しているJavaScriptはどこですか? Objective-CへのJavascriptと両方のプラットフォームでのJavaのインタフェースを作成するネイティブライブラリがありますか?

前述したように、React Native は、JSとObjective-Cの間のインターフェイスであるです。 JavaScriptはいつでもWebViewでレンダリングされません。ウェブソリューションで

それは単にWebViewの中で全体のコードを挿入?

リアクトネイティブはウェブ用ではありません。thisを使用しない限り

その他の質問:React Nativeはさまざまなプラットフォーム用に1つのコードを書くという理由だけで、React Nativeをハイブリッドフレームワークと見なすことができますか、それとも正しい用語ではありませんか?

さて、ハイブリッドフレームワークは、さまざまな開発リソース(WebテクノロジとネイティブAPIなど)を組み合わせたツールだと思います。その場合、React Nativeはこのカテゴリに入ります。私はそれがいくつかのプラットフォーム(私は単にマルチプラットフォームと呼ぶ)で動作するため、ハイブリッドとは言いません。

+0

UIコンポーネントは各プラットフォームのネイティブコンポーネントによってサポートされると言っていますか?例えば、RNのListViewはAndroidにリストビューレイアウトを挿入しますか? もう少し具体的には、RNのReactコードにListViewを追加してアプリを再実行すると、Androidの観点から、新しいAndroid ListViewをプログラムでインスタンス化してレイアウトに追加しますか? それは考えですか? –

+0

はい、まさにそうです。 – martinarroyo

+0

あなたはここにWindowsを言及していますが、私の知る限り、RNはWindows phoneをサポートしていません – HendraWD

0

私の知る通り ネイティブリソースは、フレームワーク/ OS(Android/iOS)によって純粋に与えられたコンポーネントです。 ネイティブUIを作成するには、それぞれのAndroid/iOSに関する知識が必要です。

ReactNativeに来ると、JavaScriptコードまたはHTMLコードを使用してネイティブコンポーネントを作成/生成します。 I 'の中で、それはコマンドが必要なネイティブコンポーネント

関連する問題