狂犬Angular 2 vs React

特定の単玔なアプリケヌションの䟋に぀いお、 AngularずReactの2぀のフレヌムワヌクの察立に䌚いたす。 Evgeny Gusev  @bunopus はAngularを衚し、 Ilya Taratukhin  @ilfa  は Reactを衚したす。 正盎な結論を出すために、圌らは最初にテクノロゞヌを切り替え、基本的なプロゞェクトを展開しようずしたした。 Reactを開始するず倚くの問題が発生したしたが、Angularでは、フロント゚ンドで特に䜜業をしなかった人にずっお理想的なアプリケヌションであるため、物事はずっず簡単になりたした。 しかし、もちろん、これはほんの始たりに過ぎず、その埌、 実際の玛争が続き、そのすべおの段階がカットされおいたす







スピヌカヌに぀いお



Evgeny Gusevは開発者ずしお10幎以䞊の経隓があり、過去数幎間Wrikeで働いおいたす。 最初に圌はC ++ / Cで開発し、その埌フロント゚ンドのすべおの動きずお金を決めおそこに移動したした。 Wrikeは珟圚JavaScriptを䜿甚しおいたせんが、 Dartを䜿甚しおいたす。



Ilya Taratukhinは玄7幎間商業開発に携わっおおり、すべおが最前線にいたす。 圌は2GISで働いおおり、ネむティブJSで曞いおおり、すでに死にかけおいるKnockoutのようです。 Wrikeでの仕事ず䞊行しお、Ilyaは圌のプロゞェクトを開発しおおり、Reactに積極的に没頭しおいたす。 Ilyaは1幎以䞊、 Dart + Angular 2バンドルを䜿甚しおいたす。 経隓は本圓に面癜いです



぀たり、EugeneはAngular、IlyaはReactで倚くの経隓を持っおいたす。 すべおを正盎にするために、圌らはテクノロゞヌを切り替え、これらのフレヌムワヌクでかなり単玔なプロゞェクトを䜜成しようずしたした。





Disclamerさらに、RIT ++ 2017でのYevgeny GusevずIlya Taratukhinのレポヌトのトランスクリプト、Angularがバヌゞョン4.2.0およびReact-15.5.0であったレポヌトの䜜成時に問題のすべおが真実です。 ただし、この比范は、Angular 6.0.0-rc.3がすでにリリヌスされおいるずいう事実にもかかわらず、重芁な倉曎が発生しおいない最も重芁な偎面を察象ずしおいたす。



パヌト1.玹介







プロゞェクトの本質は次のずおりです。郜垂の名前が入力される入力フィヌルドがありたす。倩気サヌバヌのhttp-requestsによっお、遞択した郜垂の倩気がわかりたす。サンクトペテルブルクでは再び曇りで、ビヌルを飲む必芁がありたす。 耇雑なこずは䜕もありたせん。



反応する



ナヌゞヌン 理想的なスタヌタヌパックを遞択するこずで、圓然、Reactず知り合いになりたした。Reactに぀いおは䜕もわかりたせん。



顧客が私のずころに来お、倩気りィゞェットを䜜成するように頌んだずしたしょう。 この問題を解決するために、私はプロゞェクトを行うのに圹立぀ものを探し始めたした、そしお、私が皆に掚薊する玠晎らしいサむトを芋぀けたした。 私はそこに行っおこの写真を芋たす108個のスタヌタヌパック珟圚189個ありたす、そのうち20個は最小ずしおマヌクされおいたす。







フレヌムワヌクの遞択に問題がありたした。そしお、108の問題がありたした。 しかし、私はそれをしお、 Facebook Starterpackを遞択したした 。







Reactをあらゆる方法で䞭傷し、すべおが悪いず蚀わなければなりたせんが、実際にはすべおがうたくいき、非垞にうたく機胜したす。 「 HTTPリク゚ストをReactに送信する方法 」をグヌグルで調べるこずから始めお、stackoverflowぞのリンクを取埗したした。そこで、fetch、axiosなどを䜿甚できるず蚀われたした。



想像しおみお、1぀の問題があり、108の問題が远加され、さらに3぀の問題が远加されたした。



Ilya EugeneはJavaScriptから2幎ほど離れおいるこずを説明し、JSでHTTPリク゚ストがどのように行われるのか、 フェッチできるものを忘れおしたった すべおのブラりザにあるはずです。 ただし、その堎合は、ポリフィルを固定するず問題ありたせん。



ナヌゞンもちろん、axiosを遞びたした。 単玔な「Hello world」アプリケヌションに次に必芁なのは、単玔なアプリケヌションを䜜成するこずです。







レンダリング関数があり、それは単玔な入力を持っおいたす。぀たり、すべおが単玔です-あなたは䜕かを駆動し、onChangeはsetStateを行いたす。







バむンドを䜿甚する必芁がありたした  さお、これはおそらくReactの問題ではありたせん-これは私の問題です。 もう1぀の単玔な「Hello world」アプリケヌションにはテストが必芁です。



テストに぀いお簡単に-すべおが悪い



私は最初にそれらを起動するこずに成功したせんでした、私はあきらめお、むリダがより賢いず刀断したしたが、私は圌に尋ねるこずさえしたせんでした。



マヌゞンノヌト



Eugene Reactでの豊富な経隓の埌、次を明確にしたいず思いたす。スタむルガむドに埓っおコンポヌネント名ずクラス名を組み合わせる方法は むリダ、Reactでコンポヌネントを䜕ず呌びたすか



むリダコンポヌネントは特定のクラスなので、倧文字でキャメルケヌスず呌びたす。



Eugeneマヌクアップには小さな文字ずハむフンを䜿甚する必芁があるため、私の䞭のすべおが逆さたになりたす。 JSXマヌクアップクラスが倧文字になっおいる堎合キャメルケヌス、気分が悪くなりたす。



第二に、 䟝存性泚入が必芁です。 ReactにReact DIはありたすか



Ilya React自䜓にはありたせんが、DIを完党に実装するか、䜕らかの皮類の簡易バヌゞョンにしたDIを実装するさたざたなツヌルがありたす。



ナヌゞヌンおそらく100人いるの しかし、それでも





Redux、Flux、およびその他の「ak」をそこにねじ蟌んだ堎合にどうなるかを芋積もりたす。



合蚈 5぀のうち4぀。







なぜ5ではなく4なのか はい、Starterpackでは、原則ずしおすべおが明確になっおいたすが、このStarterpackから遅かれ早かれ通垞の倧芏暡なアプリケヌションを䜜成する必芁があるず思いたす。 4぀の蚘事ではなく、おそらく104の蚘事を読んで、理想的なスタヌタヌパックを䜜成する必芁があるず思いたす。







むリダ私の経隓に移りたしょう。 あなたがAngularを扱うずき、䜕がすべきかを指瀺するGoogleのような巚人がいるので、すべおがより簡単です、そしお私は非垞にすぐにAngular CLI QuickStartに出䌚いたした。



その結果、コン゜ヌルで4぀のコマンドを実行したした。







私はフロント゚ンド開発者です-Node.jsずNPMを持っおいたす-そのような問題はありたせん。 その結果、 10分で 、ホットリロヌドずボルトテストを備えた実甚的なアプリケヌションが埗られたした 。 すべおがクヌルで、倚くのものが远加されたした-私は今持っおいるものをすぐに理解するこずすらできたせんでした。



次のタスクは同じです。HTTPリク゚ストを䜜成し、その前に結果を衚瀺するコンポヌネントを䜜成する必芁がありたす。 Angular Scaffoldingを䜿甚するず、このコマンドを1行で実行でき、このコマンドず呌ばれる4぀のファむルが埗られたす。









Eugene FacebookのReact in the Starterpackにもテストがありたすが、なんらかの理由で機胜したせんでした。



Ilya次のステップは、HTTPリク゚ストを䜜成するこずです。 どういうわけか、Angularのドキュメントを突砎し、䟋を芋぀けおほが完党にコピヌし、getWeather関数を呌び出したした。







そしお、䜕も取埗できたせんでした。console.log、ネットワヌクタブを確認したした。



Eugene Angularに぀いおほずんど曞いおいない、たたは曞いおいない人にずっお、RxJSでのObservableは非垞に面倒です。 賌読するたでは機胜したせん。



むリダ䜕かがおかしいず思いたしたが、このテンプレヌトをどこかに挿入する準備がただできおいたせんでした。 Angularが提䟛するHTTPラむブラリを介したHTTPリク゚ストが䞀般的に機胜するこずを確認したかっただけです。 それで私はドキュメンテヌションをもっず調べお、 Promiseでそれをする方法を芋぀けたした。







だから、私はそれをやった、それを呌び出した-それはすべお働いた。 䞀般的に、私は満足したした 。



次の問題。 2017幎にハンドラヌを切っおTypeScriptで蚘述したすが、コンテキストをバむンドする必芁がありたす。Dartの喜びに慣れおいるので、少しショックを受けたした。







これが私の問題が終わった堎所です。 動䜜するアプリケヌションを入手したしたが、ただいく぀か質問がありたす。



未解決の質問





倩気予報アプリケヌションの䜜成は非垞に簡単で、ほずんどすぐに䜿甚できたす。 しかし、本栌的なプロゞェクトを開始するずきは、アセンブリを管理する必芁がありたす。 これで、アセンブリ党䜓がcli-starter-kit内に隠されたした。



Eugene Angular CLI内には、䞍芁なスタヌタヌ䟝存関係をすべお削陀し、スタヌタヌアプリケヌションから必芁なものをすべお䜜成できるng排出コマンドがありたす。





むリダ次のアむテム。 あなたが芋たように、スタヌタヌキットは私のためにCSSファむルを生成したしたが、私はすでにより少ない、sass、スタむラス、postcssを䜿いたいです。 私はナヌゞヌンに頌った「どうしお しかし、圌はファむルの名前を倉曎するだけで、実際にアセンブリは自動的に少ないファむルを遞択したした。 もう䞀床、私は恐怖に襲われたした。Angularがそれ自䜓でどれだけ匕っ匵るのでしょうか。



合蚈



私の結論は、 Angularはフロント゚ンドで特に䜜業をしおいなかった人 、たずえば.netから来た人にずっお完璧なアプリケヌションであるずいうこずです 。 圌は、DI、あらゆる皮類の耇雑な抜象化に粟通しおおり、Angular 4ではコンポヌネントを盞互に継承できたす。



ただし、フレヌムワヌクツヌルを孊習する準備をする必芁がありたす。倚くを読む必芁がありたす。 これは本圓に膚倧な量のドキュメントです。 EugeneがReactず連携するためにむンタヌネットを真剣に怜玢しなければならないこずを恐れおいる堎合、すべおを1か所に収集したす。読み、理解するだけです。



パヌト2.玛争



合蚈-2぀のフレヌムワヌクに䌚いたした。 私たちの議論は䜕ですか



$$$スヌパヌプロゞェクト$$$



shawarmaサむトたたはshawarmaを䜜成したした。 いく぀かのタブがある小さなランディングペヌゞがありたす。 それらの1぀はコメントです。状態がどのように機胜するか、どのように保存されるかなどを理解できたす。 最埌のタブは、マップ倖郚JSラむブラリずしおのマップずの連絡先のブロックです。 少し埌でマップに戻りたす-これが問題です。



10,000ルヌブルたたはshavermaの5぀の無料郚分を取埗できるシンプルなアプリケヌションを䜜成したした。



Data-Flow-フレヌムワヌクのフロヌがどのように動くかを芋おみたしょう。 角床から始めたしょう







角床巊



すべおは状態から始たりたす。 私たちの堎合、これは単なるコメントの通垞の配列であり、そこからコメントを取埗し、䜕らかの方法でそれらをレンダリングたたは远加したす。



@を介しおこの状態をコンポヌネントに入れたす-すべおのAngularの人々は犬ず角かっこが倧奜きです。 マヌクアップの角括匧を䜿甚しお、このコメントりィゞェットに状態コメントが曞き蟌たれるこずを蚘述したす。



そこからりィゞェットから䜕かを远加したい堎合、そしおもし私が傷぀くこずを恐れおいないなら、オブゞェクト倉曎をするだけです。 しかし、そうしない方がいいです。



@output



ずかっこを蚘述する方が良いです。これらはむベントではなく、RxJSからのストリヌムです。したがっお、ポップアップは衚瀺されたせんが、動䜜が少し異なりたす。



React右



Reactにも状態がありたす。 Reactは䞀般に、倚くの異なるツヌルがあるFluxアヌキテクチャの䜿甚を掚奚しおいたす。 いわゆる小道具を介しおコンポヌネントに状態の断片を枡したす。 この蚀葉をロシア語に翻蚳する正しい方法が芋぀かりたせんでした。



ナヌゞヌンたぶん、物のような小道具を翻蚳できたす-「あなたはこれです。ピヌス」。



小道具では、デヌタをスロヌしたす-コンポヌネントでは、commentsプロパティからコメントを取埗できたす。 クリックや远加などの䜕らかのむベントを凊理する堎合、propsコンポヌネントにも送信したすが、これは単なるコヌルバックになりたす。



角床



レンダリングする必芁のあるコメントだけでなく、巚倧で倧きなコンポヌネント、たくさんのコンポヌネントがある堎合、もちろん入出力を行うのはかなりばかげおいたす。 しかし、これらが小さなコンポヌネントである堎合、たずえば、倧きなコメントりィゞェット内にはアバタヌなどがあり、入出力および角かっこを通じおもデヌタをやり取りできたす。



反応する



たったく新しいものは䜕もありたせん。すべおがたったく同じです。子コンポヌネントに小道具を枡し、CommentsWidget内でコメントを敎理し、commentコンポヌネント内で特定のコメントを枡したす。 たた、CommentFormを䜿甚しお、addむベントをリッスンし、䜕らかの方法で凊理できたす。



Eugeneもちろん、非垞に倧きなアプリケヌションがある堎合、そうするのはばかげおいたす。 これらの入出力の巚倧なツリヌができたす。 しかし、Angularには䟝存性泚入がありたす React DIはありたすか







むリダ誰かが知らなかった堎合、Angularで䜜業する前に私も知りたせんでした-サヌビスずコンポヌネント間の接続を非垞に明癜に蚭定できたす。すべおを混乱させ、リファクタリングのたびに足を螏み入れるこずができたす。



Eugene Angularは愚かな人向けではありたせん。



私たちはサヌビスを利甚したす-これは本質的に、特定の泚釈を持぀単なるクラスです。 可胜な限り抌し蟌みたす-しかし、私はあなたにそれを䌝えたせんでした 䞀般的には、必芁な堎所でのみ抌し蟌みたす。この堎合は、コメントりィゞェットで行いたす。



そしお、それが必芁でない堎合、同じ入出力を䜿甚したす。 ぀たり、䞀皮のハむブリッドシステムです。 コメントりィゞェットでは、サヌビスコヌルを䜿甚しおオブゞェクトを取埗したす。すべおが通垞どおりです。



Ilya Reactには、たずえば䞀郚のデヌタを䞊から䞋にスクロヌルできるようにする、いく぀かの簡略化されたDIバリアントがありたす。



Reduxを䟋ずしお䜿甚したすが、これは単に最も人気のあるラむブラリだからです。 他のツヌルも同様に機胜したす。



店舗がありたす。 マゞック接続機胜を䜿甚しお、ストアを最䞊䜍コンポヌネントに接続したす。 最䞊䜍コンポヌネントは、デヌタがある特定の圢匏のストアがあるこずを認識しおおり、アクションを介した特定の通信圢匏により、䜕かが発生したこずをストアに通知できたす。







したがっお、2皮類のコンポヌネントがありたす。



  1. 状態の存圚を認識しおいる䞀郚のスマヌトコンポヌネントは、その曎新に関する情報を受け取り、曎新が必芁であるこずを状態に通知したす。

  2. 䜿甚できるコンテキストに䟝存しないコンポヌネントは、必芁な堎所で必芁な小道具を入力に投入するだけです。



Eugeneそしお、Angularでは、すべおのコンポヌネントがスマヌトです。



コンポヌネント定矩



コヌドず、2぀のフレヌムワヌクでコンポヌネントを䜜成する方法を芋おみたしょう。







角床



Angularでは、コンポヌネントは単玔な通垞のJSX、TypeScript、たたはDartクラスですが、@を介した若干の泚釈が付いたクラスです。 セレクタヌを介しお蚘述できたす。「角床、芋お、マヌクアップにそのようなクラス、プロパティ、たたはタグがある堎合、これはコンポヌネントであるため、コンポヌネントずしお扱いたす。」



むリダ玛争があるこずを思い出させおください。 したがっお、私は可胜な限り反察したす。



反応する



そのため、Reactでは、いわゆる機胜的なsetStateコンポヌネントに぀いお説明したす。 入力ずしおpropsオブゞェクトを取り、JSXテンプレヌトを返す関数がありたす。







Eugene Angularのテンプレヌトは、シンプルでわかりやすいHTMLです。



むリダ非垞に明確です 参照ngFor、角括匧、コメント、括匧、onADD-プレヌンHTML



ナヌゞヌンもちろん、あなたは䜕かを孊ぶ必芁がありたす-アスタリスク、括匧、犬。 しかし、圌らはAngularはゞャビストによっお曞かれたため、そのようなものであり、倚くのキヌワヌドを持っおいるず蚀いたすが、䞀般的にはプレヌンHTMLです。



反応する



むリダ正盎に蚀うず、Reactはそれほど普通のHTMLではないずいうこずです。 ここでJSXには、蚘述する内容に応じお、HTMLコヌドずJSコヌド、たたはTypeScriptコヌドが混圚しおいたす。 はい、そのようなニュアンスがありたすが、あなた自身の䞖話をするのに十分であり、コンポヌネントの衚瀺に関連するコヌドのみをコンポヌネントファむルに蚘述したす。 そしお、すべおの重いロゞックは、レデュヌサヌ、ストア、コンポヌネントから離れたヘルパヌに匕き出されなければなりたせん。そうすれば、すべおがきれいで透明になりたす。



JSで䌚瀟の開発者ずレむアりトデザむナヌを共有する堎合、レむアりトデザむナヌはこのようなコンポヌネントの説明にすぐに慣れ、これに関する問題は発生したせん。







角床



Eugene AngularではDIはどのように機胜したすか 基本的に、あなたは魔法を䜿っお次のように蚀うだけです。



-芋お、コンストラクタにこのようなサヌビスがありたすこの堎合はcommentsService。



それだけです。Angularは、コンポヌネントを䜜成したずきに実装したす。 次に、この堎合のngOnInitのように、ラむフサむクルフック䞭にむンスタンスを䜿甚したす。 あなたは䞀日の終わりたでDIに぀いお話すこずができたす-それはただの魔法です。



反応する



むリダ Reactの魔法をいく぀か玹介したす。 コンポヌネントをストアに関連付けるには、コンポヌネントず接続機胜をReduxから取埗し、接続するルヌルを枡したす。 1぀のルヌルはReduxツリヌをサブツリヌに分割し、小道具でコンポヌネントに枡す方法に぀いお説明し、2番目のルヌルはアクションReduxをコヌルバックでラップしおコンポヌネントの小道具に枡す方法に぀いお説明したす、それだけです。



Eugeneもちろん、蚱しおくれたすが、Angularの堎合は魔法の堎合、この゚クスポヌトのデフォルト接続はある皮の黒魔術です。



Ilyaご存知のように、JSは2幎で少し倉曎され、珟圚ではデフォルトの゚クスポヌトが正垞になっおいたす。



ナヌザヌむンタラクション



Eugene䞀般的に、これは最も興味深い郚分です。ナヌザヌが䜕かを行うず、すべおがどのようにレンダリングされ、どこで分解されるかです。







角床



その䞭にcomments-widget、その䞭に小さなコメントフォヌムのアプリケヌションがありたす。 これらはすべおコンポヌネントです。 ナヌザヌが䞋郚コンポヌネントのどこかで送信をクリックするずどうなりたすか



すべおの角床の愛奜家は、ゟヌンが倧奜きです。 ゟヌンは非垞にトリッキヌなもので、奇劙なこずに、ダヌトから出おきたした。 ゟヌンは、ブラりザのすべおの非同期機胜setTimeout、setInterval、およびクリックなどのすべおのナヌザヌむンタラクションにモンキヌパッチを実装したす。



䜕かが起こるず、ゟヌンは特定のコヌドをひき぀けお匕き出したす-これがChangeDetectionです。 ChangeDetectionは、すべおのコンポヌネントのルヌトから実行され、䜕かが倉曎されたこずを刀断し、すべおをレンダリングしたす。 たずえば、5぀のコメントがあり、6番目のコメントが远加された堎合、5぀のコメントすべおがリダむレクトされたす。 ですから、非垞に高速です。



反応する



むリダ同じReactアプリケヌションを䜜りたしょう。 わかったように、プラスたたはマむナスのアヌキテクチャを持぀アプリケヌションを䜜成するこずは問題ではありたせんが、ポむントは詳现にありたす。







フォヌムの送信むベントをキャッチし、䞊蚘のコンポヌネントに通知し、ストアでアクションをスロヌし、アクションを凊理したす。 ストアは倉曎を発行したす。 倉曎の発行はストアに関連付けられおいるすべおのコンポヌネントに届き、コンポヌネントはストアツリヌぞのリンクが倉曎されたかどうかに぀いおトピックの小道具のチェックを開始したす。







それらが倉曎された堎合、コンポヌネントは再レンダリング関数を呌び出し、仮想DOMを完党に再レンダリングしたす。その埌、仮想DOMは以前の状態を珟圚の状態ず新しい状態ず比范し、DOMツリヌを点ごずに倉曎したす。



ナヌゞン埅っお。 仮想DOMがあり、原則ずしお、メモリ内にDOMツリヌ党䜓のコピヌが2぀ある可胜性がありたす。



むリダこれは問題ですか



Eugeneラップトップにギガバむトのメモリがあるずしたら



むリダ 2007幎のラップトップ しかし、本質的には、実際のDOMには非垞に䞍快な制限がありたす。 5〜1䞇個を超えるDOMノヌドを保持するこずはできず、䞍適切に動䜜し始め、速床が䜎䞋したす。 したがっお、倚くの仮想DOMノヌドを䜜成するこずはできたせん。



Eugene特にIEでは。





パヌト3.痛み



通垞、議論の埌に痛い。







角床



Angularの痛みは䜕ですか 私はあなたにこれを䌝えたせんでしたが、それは少し遅いですが、あなたがそれを調理する方法を知らない堎合だけです。







たずえば、textareaがありたす。 クラスをぶら䞋げたり、䜕かを匷調したりするなど、mousmoveで䜕かをしたい。 次に、mousmoveにサブスクラむブしお実行したす。 すべおがシンプルです。



ChangeDetectionが発生するず、コンポヌネントを酞性の色で色付けしたすが、このようなものが衚瀺されたす。







通垞、ChangeDetectionは非垞に高速であるず蚀われおいたす。 しかし、倚くのDOMノヌドずコンポヌネントがある堎合、すべおが高速ではありたせん。



これは非垞に簡単に修正できたす。Angularがナヌザヌに觊れないように、ゟヌン倖のmousmoveにサむンアップしおください。 その埌、䜕かが必芁になったら、ゟヌンに戻るこずができたす。







むリダすべおが自動的にクヌルに動䜜するようにゟヌンを䜜成しおいたす。そしお、これを回避しようずしたす



ナヌゞヌンそうだ 私は、Angularは愚かなものではないず蚀った。



Angular-4でない堎合、それはすべお真実です。 みんな詊しおみたが、すべおうたくいった。 䞀般に、Angularは今や非垞に高速で矎しく、優れた機胜を発揮したす。







反応する



むリダ Reactの痛みに぀いお少し。 か぀お、私がReactに没頭し始めたずき、私は今、囜家を通じお機胜するフレヌムワヌク䞊でアプリケヌションを曞くこずに決めたした。 簡単そうですね。 そしお、「DOMノヌドにクラシックを配眮し、ある皮のアニメヌションを䜜成し、このクラシックを削陀したす」ず考えたす。しかし、Reactではこのようなこずは機胜したせん。







Reactでアプリケヌションを䜜成するずき、最初の数か月は思考を再構築し、Reactでアプリケヌションを䜜成するこずを孊びたす-状態を倉曎し、倉曎埌のアプリケヌションの倉化を理解したす。 いずれにせよ、Reactに完党に没頭しおいるすべおの人がこれを孊び、それを扱う方法を理解しおいたす。



サンプルアプリケヌションには、マップのあるブロックがありたした。 サヌドパヌティのカヌドを挿入する必芁がある堎合、2぀のオプションがありたす。



良い結果。 たずえば、2GISの䞀郚の人は、ラむブラリにReactラッパヌを䜜成したした。 マップ-DOMツリヌを構築する特定のサヌドパヌティJSアプリケヌションは、単玔なコンポヌネントになりたす。 あなたはそれを䜿甚し、それだけです。







別のオプション 。 ただし、Reactで以前に誰も接続たたは接続しなかったJSラむブラリを接続したいが、ReactコンポヌネントでJSラむブラリをラップする方法をオヌプン゜ヌス゜リュヌションに投皿しなかったこずがありたす。 そしお冒険が始たりたす。







Reactには倚くのラむフサむクルフックがあり、そのうちのいく぀かは䜿甚する必芁があるこずがわかりたす。 最初にcomponentDidMountを䜿甚する必芁があり、ReactコンポヌネントがレンダリングされおDOMに挿入されるたで埅ちたす。 次に、このサヌドパヌティのJSラむブラリを初期化し、DOMノヌドをラむブラリに枡すず、そこに所有物がデプロむされたす。



componentWillReceivePropsのラむフサむクルフックを芚えおおく必芁があり、コンポヌネント入力で小道具を曎新するたびに、手で巚倧なロゞックを蚘述する必芁がありたす。



私の䟋では、それは単玔ですが、巚倧なフットクロスがあるず思われたす。



ラむフサむクルフックshouldComponentUpdateを芚えおおく必芁がありたす。 ここでは、falseを返し、「反応、レンダリングでgifを提䟛したした。空ず芋なし、たったく入りたせん」ず蚀いたす。



もう䞀぀



Eugeneツヌルに぀いお少し話したしょう。



角床



もちろん、Angularはそれをすべお備えおいたす。 䜕も必芁ありたせん、ありがずうございたす。



反応する



むリダ Reactは、少なくずも優れたDevToolsで愛されおいたす。







React DevToolsがありたす。これは、アプリケヌションをDOMツリヌずしおではなく、Reactコンポヌネントずしお提瀺するのに圹立ちたす。 どのコンポヌネントがどのコンポヌネントに組み蟌たれおいるかを確認したす。 たずえば、Reduxが䜜成するマゞックラッパヌコンポヌネント、およびコンポヌネントの入力に来たプロップを参照しおください。 どこで䜕が間違っおいたかを理解する。



倚くの人がDevToolsを芋たずきにReactを䜿い始めたようです。 これらのツヌルを䜿甚するず、時間内に移動しお状態倉曎の履歎を確認し、アプリケヌションの状態を数ステップ前に巻き戻すこずができたす。



ナヌゞヌン 2007幎に戻りたすか



むリダタブが非垞に長い間生きおいたのなら、なぜですか







たた、䟿利な機胜もありたす。最も近い状態の差分、完党な状態、テスト甚のmokiが生成されるテストタブです。 アプリケヌションの珟圚の状態に基づいおmokaを取埗し、状態に詰め蟌み、䜕かをチェックするテストを実行できたす。 アプリケヌションを目的の状態に倉換する手順を実行する必芁はありたせん。状態は単にアプリケヌションを䜜成し、アプリケヌションがこの状態にあるずきにすべおが正垞かどうかを確認したす。



パヌト4.終わり



議論の埌、痛みがあり、痛みの埌、それは終わりです。 Angular察Reactのバトルの䞀郚を芁玄したす。







角床





反応する









䌚議では、ナヌゞンずむリダがレポヌトの途䞭でAngular vs Reactに投祚したしたが、残念ながらボットがゲヌムに参加したした。 したがっお、この蚘事の調査で繰り返したしょう。



今幎もRIT ++フェスティバルで退屈しないこずをお玄束したす-フロント゚ンドに関するレポヌトのプヌルは非垞に深刻です。 以䞋に䟋を瀺したす。



Andrey Solodovnikov N1.RUは、 Vue.jsが倧芏暡なWebアプリケヌションの䜜成に適し おいるかどうかを刀断し、 Vue.jsでの開発が本圓に䟿利である理由ずパフォヌマンスがどうであるかを説明するこずを玄束したす。



HuntflowのVitaliy Glybinは、このトレンディでモダンなフレヌムワヌクのすべおをれロから曞き盎すのに6か月必芁な理由をビゞネスに簡単に説明できるず䞻匵しおいたせん。 でも

倧芏暡で耇雑なアプリケヌションをBackboneからVue に移行した個人的な経隓 を共有し 、ビゞネスを損なうこずなく そしおその逆もこれを行うこずができた理由に぀いお話したす。



ナヌリ・ナヌリンは、Skyengが議論、実隓、コヌドに費やした100時間以䞊を節玄し、他人の間違いから孊がうずしおいたす。 レポヌト「 Angular 4/5でUIキットを䜜成する技術面 」は、 共通コヌドをラむブラリに入れるプロセスに圓おられたす 。



Luxoft Mikhail Bashurovのレポヌトでは、 むベントルヌプに぀いお説明したす。 むベントルヌプずは䜕で、䜕を䜿甚するのかを怜蚎したす。 J ava S criptの 非同期性を䜿甚する方法に぀いお話したしょう。これは、同時に1぀のスレッドを持ち、足元で自分自身を撃ちたせん。



合蚈で、玄60のアプリケヌションが Frontend Confに送信されたしたが、遞択されるのは半分未満です。 ニュヌスをフォロヌするず、正確なプログラムを埅たずにチケットを予玄できたす。




All Articles