ReactJS使用年:概要

私たちはVoximplantのReactを愛し、感謝しています。 誇大広告(React Nativeであるという理由だけで、新しいSDKについての1.5千のツイート)のためではなく、フレームワークが本当に便利だからです。 インターフェースを小さな孤立した部分に単純に分割するだけで、Jade / Pug、Web Components、さらにはAngularには欠けていました。



カットの下には、JetRubyエージェンシーの開発者がReactの印象を共有している記事の適合した翻訳があります:使用したもの、使用しなかったもの、使用する予定のもの。





ReactJSの使用を開始し、関連技術の海を消化してからほぼ1年が経過しました。 そして、私たちはあなたと私たちの経験を共有するためにここにいます。



最近、クライアント側のレンダリングとRails APIサーバーを使用するプロジェクトを完了しました。 全体的な印象は非常にポジティブです。



私たちが好きなもの:





当然、この新しい美しい世界では、すべてが美しいとは限りません。 それにもかかわらず、多くの問題が発生しました。





私たちにとって正しいと思われるいくつかの技術的解決策と推奨するもの:





次のアプリケーションで試したいこと:



バベルを使用する



Babelは既にJSXでの作業に公式にReactを使用しています。 ただし、JSXを使用していない場合でも、Babelはフロントエンド開発に最適なツールです。 ブラウザでのサポートを待たずにES6とES7のこれらすべてのクールな機能を利用したくないのは誰ですか?



同型アプリケーション



これは現在の傾向です。 このアプローチについて聞いたことがない場合 、Airbnbチームからの良いレビューがあります 。 アイデアは、サーバー上でHTMLページをレンダリングし、クライアントに転送して(キャッシュとCDNを使用して)ブラウザーに即座に表示し、JavaScriptが読み込まれると、ReactJSが既にレンダリングされたページに「フック」し、アプリケーションが起動することです。



機能的リアクティブプログラミング(FRP)を使用して調整する(Flux Dispatcherとして)



JavaScriptでFRPを使用するための優れたライブラリがいくつかあります(RxJS、Bacon、Kefir)。 主なアイデアは、変数を一連の変更として表現し、 mapfilterreduceおよび高階関数(別の関数を引数として取る関数)などの関数を使用してこれらの変更を結合することです。 ユーザーインターフェイスの場合、このアプローチにより、イベントシーケンスをイベントストリームに変換し、そのようなフローをオブジェクトとして操作することができます。



状態管理の一方



1つだけですが、大きな利点があります。 Reactコンポーネントにはローカル状態が存在しないため、UIを入力として1つの状態を引数として受け取り、この状態に対応するユーザーインターフェイス(より正確にはそのReact表現)を返す1つの純粋な関数(関数型プログラミングの用語)と見なすことができます。 実際には、このアプローチにより、タイムトラベルをリアルタイムでデバッグ、元に戻す、やり直しが可能になります。 ここで、それがどのように行われたかを見ることができます:





このアプローチにより、Webアプリケーションのテストとデバッグがまったく新しいレベルになります。 スクリーンショットや「再生手順」の長いリストはもう必要ありません。 バグが発生した場合は、アプリケーションの現在の状態をコピーして、開発者に渡します。



不変のデータ構造



場合によっては、それらを使用すると、より高速なコードを記述できます。 さらに、変更可能なオブジェクトと値が不足しているため、バグが少なくなります。 Baobabは不変のデータ構造(永続的のみ)を提供しないという事実にもかかわらず、データツリーを直接変更することは推奨しませんが、このためにAPI関数を使用することを提案します。



画像の作成者(カットの前)はStefpetCreative Commons 2.0です。



All Articles