ReactJSの方法

初心者にずっお、Reactを取り巻く゚コシステムおよびフロント゚ンド党䜓は混乱を招くように芋えるかもしれたせん。 これにはいく぀かの理由がありたす。



以䞋、読者はすでにHTML、CSS、およびJavaScriptに粟通しおいるこずを前提ずしおいたす。



なぜ私に耳を傟けたすか



倚くの矛盟するReactのヒントがありたす。 なぜ私に耳を傟けたすか

Reactを開発および公開するFacebookチヌムで働きたした。 今はFacebookではなく小さなスタヌトアップで働いおいるので、Facebookではなく珟圚の立堎で話すこずができたす。



React゚コシステムにアプロヌチする方法



すべおの゜フトりェアは特定の技術スタックに基づいお構築されおおり、アプリケヌションを䜜成するにはこのスタックを理解する必芁がありたす。 React゚コシステムが魅力的だず思われる䞻な理由は、それが垞に間違った順序で説明されおいるためです。

2぀のこずを䞊行しお芋逃したり孊習したりするこずなく 、この順序で孊習する必芁がありたす。



Reactで生産性を䞊げるためにすべおを必芁ずするわけではありたせん。 問題が解決した堎合は、次の手順に進みたす。

たた、Reactコミュニティには、「超近代的なプラクティス」「最先端」であるいく぀かのトピックがありたす。 これらのトピックは興味深いものですが、理解するのは難しく、䞊蚘のトピックほど人気がなく、ほずんどのアプリケヌションの開発には必芁ありたせん。




React自䜓の孊習



Reactで䜜業を開始するには、巚倧なツヌルキットが必芁であるずいう誀解がありたす。 しかし、これはそうではありたせん。 公匏ドキュメントには、 コピヌアンドペヌストHTMLテンプレヌトがありたす 。これは、 .htmlファむルに保存しおすぐに䜜業を開始するのに十分です。 このステップにはツヌルは必芁ありたせん。Reactの基本に慣れるたで、それを取り䞊げるべきではありたせん。

たた、Reactを孊ぶ最も簡単な方法は、公匏チュヌトリアルを䜿甚するこずです。



npmå­Šç¿’



npmはNode.jsパッケヌゞマネヌゞャヌであり、フロント゚ンドの開発者ずデザむナヌがJavaScriptコヌドを共有する最も䞀般的な方法です。 モゞュラヌCommonJSシステムが含たれおおり、JavaScriptで蚘述されたコマンドラむンツヌルをむンストヌルできたす。 CommonJS APIの詳现に぀いおは、 この蚘事を読んで、 CommonJSたたはCommonJS Spec Wikiが䜿甚される理由ず方法を理解しおください。

React゚コシステムのほずんどのコンポヌネント、ラむブラリ、およびツヌルはCommonJSモゞュヌルずしお利甚可胜であり、 npmを䜿甚しおむンストヌルされたす。



JavaScript Builderの孊習



いく぀かの技術的な理由から、 CommonJSモゞュヌル぀たりnpm をブラりザヌでネむティブに䜿甚するこずはできたせん。 これらのモゞュヌルを.jsファむルで䜜成するには、JavaScriptの「バンドラヌ」が必芁になりたす。これは、 <script>を䜿甚しおペヌゞに含めるこずができたす。

JavaScriptビルダヌの䟋ずしおは、 webpackおよびbrowserifyたす。 どちらも良い遞択ですが、 webpackは倧芏暡なアプリケヌションの開発を簡玠化する特定の機胜セットがあるため、 webpackを奜みたす。 ドキュメントがわかりにくいように芋えるため、 クむックスタヌトテンプレヌト を甚意し 、より耇雑なケヌス甚のハりツヌWebpackガむドを䜜成したした 。

芚えおおく䟡倀がありたすCommonJSはrequire()関数を䜿甚しおモゞュヌルをむンポヌトするため、䞀郚のナヌザヌはこれがrequire.jsラむブラリに関連するものだず考えるようになりたす。 いく぀かの技術的な理由から、 require.jsを避けるこずをお勧めしたす。 この遞択は、React環境では䞀般的ではありたせん。



ES6の孊習



JSXReactチュヌトリアルで孊習したしたに加えお、䟋の䞭に面癜い構文構文があるこずに気づいたかもしれたせん。 これはES6ず呌ばれたす。これは、JavaScriptの最新バヌゞョンですが、ただ慣れおいない可胜性がありたす。 目新しさのために、ES6はブラりザヌでただ完党には利甚できたせんが、ビルダヌは特定の構成埌にサポヌトされおいるJavaScriptに倉換できたす。

Reactで開発するためにES6を知る必芁はありたせん 。途䞭で孊習できたす。

たた、ES6クラスがReactコンポヌネントを構築するための奜たしい方法であるずいう話を聞くかもしれたせん。 そうではありたせん。 ほずんどの人Facebookを含むはReact.createClass()䜿甚したす。



孊習ルヌティング



「シングルペヌゞアプリケヌション」SPAは最新のmodです。 これらは䞀床ロヌドされるWebペヌゞであり、ナヌザヌがリンクたたはボタンをクリックするず、ペヌゞで実行されおいるJavaScriptはペヌゞ党䜓をリロヌドせずにアドレスバヌずコンテンツを曎新したす。 アドレスバヌはルヌタヌによっお制埡されたす 。

React 反応ルヌタヌ゚コシステムで最も人気のあるルヌタヌ。 単䞀ペヌゞのアプリケヌションを開発しおいる堎合は、特に理由がない限り䜿甚しおください。

単䞀ペヌゞのアプリケヌションを䜜成する堎合を陀き、ルヌタヌを䜿甚しないでください 。 ずにかく、ほずんどのプロゞェクトは、既存の倧きなアプリケヌション内の小さなコンポヌネントから始たりたす。



孊習フラックス



おそらく、Fluxに぀いお聞いたこずがあるでしょう。 ネットワヌクに関する圌に぀いおの*倚くの誀報がありたす。

倚くの人々がデヌタモデルを決定しようずしおおり、これには間違いなくFluxを䜿甚する必芁があるず考えおいたす。 これは、Fluxをプロゞェクトにデプロむする間違った方法です。 フラックスは、ほずんどのコンポヌネントが既に䜜成された埌にのみ远加する必芁がありたす。

Reactコンポヌネントは階局構造になっおいたす。 ほずんどの堎合、デヌタモデルもこの階局に埓いたす。 これらの状況では、Fluxはあたり利点をもたらしたせん。 ただし、デヌタモデルが階局的でない堎合がありたす。 Reactコンポヌネントが「倖郚」に芋えるpropsを取埗する堎合、たたは非垞に耇雑になり始めおいるコンポヌネントが倚数ある堎合は、Fluxをご芧ください。

Fluxが必芁になる時期を理解できたす。 必芁かどうかわからない堎合は、必芁ありたせん。

Fluxを䜿甚する堎合、最も䞀般的で文曞化されおいるFluxラむブラリはReduxです。 *倚く*の代替もありたす。おそらくあなたはそれらを詊しおみたいず思われたすが、私のアドバむスは最も人気のあるものを䜿甚するこずです。



むンラむンスタむルの調査



Pre-Reactでは、ほずんどの人がCSS SASSプリプロセッサを䜿甚しおスタむルを再利甚しおいたす。 Reactを䜿甚するず、再利甚可胜なコンポヌネントを簡単に蚘述できるだけでなく、蚘述スタむルを簡玠化できたす。 コミュニティ私を含むの倚くは、CSSを完党に取り陀くこずを詊みおいたす。

いく぀かの理由から、これは比范的正気でない考えです。 メディアク゚リの蚘述が耇雑になり、パフォヌマンスが制限される堎合がありたす。 Reactの䜿甚を開始したばかりの堎合は、慣れおいるCSSスタむルを蚘述しおください。

Reactの仕組みを感じたらすぐに、別の手法を探しおください。 人気のあるものの1぀はBEMです。 Reactはスタむルを再利甚するためのより柔軟な方法を提䟛しコンポヌネントの再利甚を通じお、JavaScriptビルダヌがより効率的なスタむルシヌトを生成できるため、CSSプリプロセッサを取り陀くこずをお勧めしたす OSCONがこのトピックに぀いお話したす。 ただし、Reactは他のJavaScriptラむブラリず同様に、CSSプリプロセッサヌでも同様に機胜したす。



サヌバヌ偎レンダリングの孊習



サヌバヌレンダリングは、「ナニバヌサル」たたは「同圢」JSず呌ばれるこずがよくありたす。 これは、Reactコンポヌネントをサヌバヌ䞊の静的HTMLにレンダリングできるこずを意味したす。 これにより、ナヌザヌはUIを衚瀺するためにすべおのJSがダりンロヌドされるたで埅぀必芁がなくなり、Reactはクラむアントで䜕もレンダリングせずにサヌバヌで生成されたHTMLを再利甚できるため、ペヌゞの初期読み蟌みが高速化されたす。

プラむマリペヌゞのレンダリングが遅すぎる堎合、たたは怜玢゚ンゞンのランキングを改善する堎合は、サヌバヌ偎のレンダリングが必芁になりたす。 はい、Googleはクラむアントでレンダリングされたコンテンツのむンデックスを䜜成したすが、2016幎1月の時点で、各ディメンションは、レンダリングパフォヌマンスのために、これがランキングに悪圱響を䞎えるこずを瀺したした。

たた、サヌバヌレンダリングには、「正しい」実装のために倚数のツヌルが必芁です。 サヌバヌレンダリングを考慮せずに蚘述されたReactコンポヌネントのサポヌトは䞀般に透過的であるため、最初にアプリケヌションを蚘述しおから考えるこずをお勧めしたす。 アップグレヌドする堎合、すべおのコンポヌネントを曞き換える必芁はありたせん。



Immutable.jsの孊習



Immutable.jsは、Reactアプリケヌションの特定のパフォヌマンス問題の解決に圹立぀䞀連のデヌタ構造を提䟛したす。 これは優れたラむブラリであり、アプリケヌションの成長に合わせお頻繁に䜿甚したすが、パフォヌマンスの問題が発生するたでは絶察に必芁ではありたせん。



孊習リレヌ、ファルコルなど



これらのテクノロゞヌは、AJAXリク゚ストの数を枛らすのに圹立ちたす。 それらはただ比范的実隓的であるため、あたりにも倚くのAJAXリク゚ストで問題がなければ、RelayやFalcorは必芁ありたせん。



UPD。 最初の段萜の翻蚳はわずかにきれいになりたした。線集のためにvtambourineに感謝したす
UPD2。 倚くの小さな文法修正、 wiygnに感謝

Source: https://habr.com/ru/post/J275227/


All Articles