Web 開発の考え方が React Native でどのように私を迷わせたのか
最初の React Native アプリを構築したとき、私には Web 開発の経験がありました。 iOS と Android で React を使用することは、私のスキルの自然な延長のように思えました。
しかし、Web 開発者の考え方がネイティブ アプリ開発に必ずしもうまく反映されるわけではないことが、困難な方法ですぐにわかりました。
ナビゲーションを例に考えてみましょう。 Web では通常、各サイトが独自のページ レイアウトを作成します。ヘッダー、サイドバー、フッターはすべてカスタム構築されています。単純な要素から始めることもできますが、それは単なる空白のキャンバスです。機能的かつ視覚的に魅力的なものにするには、JavaScript と CSS を使用する必要があります。
このカスタマイズはあなたのブランド アイデンティティの一部になります。ヘッダーが別のサイトのものと似ていると、一般的であると感じられます。
私がネイティブ アプリ開発に移行したときも、同じ考え方を持ち歩きました。
すべてのカスタム コンポーネントを細心の注意を払って設計しました。戻るボタンとタイトルを備えた独自のヘッダーを作成しました。カスタムの画面遷移とアニメーションを作成しました。安全領域を自分で管理し、画面の向きを追跡してトランジションをアニメーション化することもしました。私はカスタムの下部タブを作成しました。これは、私のアプリが他の人のアプリと似ていないことを確認するためのものです。
これが間違いであると気づくのに、時間はかかりませんでした。
ネイティブ アプリのユーザーは、アプリ間で一貫したパターンを期待しています。また、ナビゲーションなどの基本的な UI 要素の品質にも大きな期待を寄せています。たとえば、iOS では、ユーザーは戻るボタンを長押しして、複数の画面を戻ることを期待します。それが欠けていると、その体験は不完全に感じられます。
では、なぜ車輪を再発明するのでしょうか?ネイティブ コンポーネントはすでにプラットフォーム用に最適化されています。カスタム ヘッダーを最初から作成する代わりに、単純にネイティブ ヘッダーを使用して色を微調整することもできました。さらに良いことに、カスタマイズを完全にスキップして、UIKit コンポーネントを直接使用することもできました。ユーザーは、「基本的」と感じるどころか、このアプリが iOS エコシステムにいかに自然に適合するかを評価したでしょう。
Apollo for Reddit のようなアプリの成功を例に挙げましょう。 iOS のネイティブなデザイン言語を採用し、プラットフォームの自然な拡張のように感じられるため、人々に気に入られました。
これは Web 開発とは大きく対照的です。ウェブでは、空白のキャンバスから始めて、すべてを自分で構築します。すぐに使えるプリミティブは、多くの場合、不格好で魅力的ではありません。ボタンはグレーです。入力には粗い輪郭があります。一貫したベースラインを得るために CSS をリセットすることも必要です。
Web UI ライブラリはこれらの不満を軽減するために存在しますが、パッチワークのソリューションです。比較すると、iOS のようなネイティブ プラットフォームには、一貫性のある美しく作られたデザインのプリミティブが付属しています。ナビゲーション、アニメーション、メニュー、タイポグラフィ、色、アイコンはすべて、シームレスなユーザー エクスペリエンスを生み出すために専門家によって慎重にデザインされています。これらは単なるツールではなく、数十年にわたる改良によって形成されたデザイン システムです。
これを理解するまでにあまりにも長い時間がかかりました。私も最初は Apple のヒューマン インターフェイス ガイドラインを読む気もありませんでした。
2019 年当時、React Native アプリはネイティブ アプリの高品質な模造品のように感じられることがよくありました。彼らはその役を見たが、それを完全には感じなかった。 React Native の哲学は、常に基盤となるプラットフォームに一致することですが、実際には、多くのライブラリは、本物を使用するのではなく、ネイティブのコンポーネントを模倣した JavaScript ベースのコンポーネントに依存していました。
たとえば、Android 上の React Native アプリではマテリアル デザイン ヘッダーがよく使用されますが、実際のネイティブ ヘッダー コンポーネントを利用するのではなく、JavaScript で実装されていました。
Web 開発者として、私はこの抽象化に魅力を感じました。これにより、カスタマイズを完全に制御できるようになりました。しかし、このアプローチでは、ユーザー エクスペリエンスを低下させる微妙な矛盾が生じることがよくありました。
React Native 開発者に全面的な責任があるわけではありません。当時、特に Expo を使用している場合、ネイティブ コードで作業するのは面倒でした。ネイティブ機能を追加するには、多くの場合、Expo を放棄してスタック全体を再構成する必要がありました。ネイティブ コードを含むライブラリは React Native の更新と頻繁に同期しなくなり、開発者は完全に理解していない Objective-C または Java ファイルに取り組むことになります。
「JS ベース」はライブラリのセールスポイントにもなり、開発者にネイティブの依存関係に対処する必要がないことを約束しました。
JavaScript とネイティブ コードの間のこの隔たりにより、私の Web ファーストの考え方が強化されました。すべてにおいて JavaScript を使用してみませんか?
ありがたいことに、React Native エコシステムは進化してきました。現在では、Swift と Kotlin を使用して、はるかに少ない構成でネイティブ モジュールを作成できます。さらに良いことに、Expo はネイティブ コードをサポートするようになりました。これらの改善により、ネイティブ ファースト開発がよりアクセスしやすくなり、ライブラリがネイティブ プリミティブを受け入れることが奨励されています。
たとえば、React Navigation はネイティブ コンポーネントの使用に移行し、開発者の広範なカスタマイズよりもシームレスなユーザー エクスペリエンスを優先しています。
この変化は、React Native の明るい未来を示しています。ネイティブ ツールが使いやすくなったことで、プラットフォームに属するかのような見た目と操作感のアプリを構築できるようになりました。
だから、私の間違いから学んでください。プラットフォームのツールを使用し、その設計哲学を受け入れてください。そして何よりも、ルールを破る前にルールをマスターしてください。
以上がWeb 開発の考え方が React Native でどのように私を迷わせたのかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。
