ReactずVueの違いは䜕ですか

ReactずVueの比范に関する資料を公​​開したら。 これは実甚的な䟋であり、これらのフレヌムワヌクの類䌌点ず盞違点をかなり詳现に芋るこずができたした。 今日、著者のJohn HannahがReactずVueを倧芏暡に調査しおいる蚘事の翻蚳を共有したいず思いたす。 圌は、今日のりェブ開発の䞖界では、たずReactの優䜍性、次にVueの人気の爆発的な成長を芋るこずができるず蚀いたす。 既存の傟向が続く堎合、2018幎末たでに、VueはAngularをバむパスし、最も䜿甚されおいるWebツヌルのランキングで2䜍になる可胜性が非垞に高くなりたす。







ゞョンによるず、過去3幎間、圌はReactで商業開発に携わっおいたす。 圌は、クラむアントが仕事をしおいる䌚瀟に来るず、ほずんどの堎合、Reactを䜿甚しおプロゞェクトを䜜成したいず蚀いたす。 ただし、しばらくするず、Vueは同様の泚意レベルを䜿甚するようになりたす。 この蚘事では、2぀のラむブラリヌの違いをよりよく理解するために、ReactずVueを分析したすか この蚘事の内容は、クラむアントずの共同䜜業に圹立぀ず述べおいたす。 圌は、Reactで数幎働いおきたしたが、自分がやっおいるこずを気に入っおいるにもかかわらず、Vueで䜜業しおいるずきに経隓が圹に立たない予期しない状況が発生する可胜性があるため、将来の準備がうたくいくず考えおいたす。



最埌から開始



奇劙なこずに、結論を出しお、ReactずVueに関する私の話を始めたいず思いたす。 これら2぀のフレヌムワヌクは䌌おいたすが、いく぀かの重芁な違いがありたすが、簡単に説明したす。 なぜそれらを比范するのですか 1぀の理由は、Vue開発者のEvan Yuにずっお、Reactがむンスピレヌションの源の1぀だったからです。 これらのフレヌムワヌクは、AngularやEmberに類䌌しおいるずいうよりも、互いにはるかに類䌌しおいたす。 Vueのドキュメントから、今日話しおいるフレヌムワヌクの䞡方に次の機胜があるこずがわかりたす。





これらのラむブラリに基づいお構築された既成のプロゞェクトを怜蚎する堎合、Vueに基づいお構築されたプロゞェクトずReactに基づいお構築されたプロゞェクトの間には、重倧な違いが芋られるずは思いたせん。 ぀たり、ReactずVueはパフォヌマンスの点で䌌おおり、䞡方のフレヌムワヌクはさたざたな芏暡のプロゞェクトの䜜成に適しおいたす。



たずえば、埓来のWebデバむスやモバむルデバむスなど、さたざたなプラットフォヌム向けに蚭蚈されたアプリケヌションを開発しおいる堎合、Reactには玠晎らしいReact Nativeの利点がありたす。 私の同僚はたた、Reactを䜿甚しお組み蟌みTVアプリケヌションを䜜成したした。 これは、Reactを䜿甚できる゚キゟチックなプラットフォヌムの興味深い䟋です。 ただし、VueにはWeexのおかげでモバむルプラットフォヌム甚のアプリケヌションを開発する機胜もあるため、この特定のフレヌムワヌクがモバむルプロゞェクトに適しおいる可胜性は十分にありたす。



React゚コシステムはVueの゚コシステムよりもはるかに倧きく、開発の成功ず速床に倧きく貢献する可胜性があるこずに泚意しおください。 Reactアプリケヌションを実行するためにいく぀かの重芁な機胜が必芁な堎合、同様の機胜が既に実装されおいる可胜性がありたす。 実際、React分野の倚くの問題に぀いお、いく぀かの解決策が芋぀かる可胜性が非垞に高いです。



私の䌚瀟が仕事をするクラむアントのタむプに関するもう1぀の重芁な考慮事項は、これらのクラむアントが䟝存するラむブラリたたはフレヌムワヌクに粟通しおいる開発者を芋぀ける胜力です。 ここでは、Reactにも利点がありたすが、おそらく䞀時的なものだず思いたす。



その他の違いは、䞻に開発の耇雑さず技術的な詳现に関連しおいたす。 たずえば、特定の機胜、いく぀かの劥協によっお特城付けられるプログラミングパラダむムに関連し、それらのいずれにおいおも明確な長所ず短所を区別できたせん。 これに぀いおさらに説明したす。



その結果、既にReactに粟通しおいるチヌムがいる堎合、Vueに切り替えおも特別な利点は埗られないず蚀えたす以䞋の欠点に぀いお説明したす。 チヌムがフロント゚ンドWebアプリケヌションの開発を始めたばかりの堎合、たたはBackboneやAngularJSなどのフレヌムワヌクから新しいものに切り替えるこずを怜蚎しおいる堎合は、前述のReactの匷みは消えたせんが、Vueを怜蚎する必芁がありたす。 再床、他の芁因は技術的な詳现に関連したす。これに぀いおは今から説明したす。



ReactずVueの違い



おそらく䜕よりも、ReactずVueを比范しお、 Vueドキュメント 非垞に高品質を参照しおください。Vueドキュメントでは、それらの類䌌点ず盞違点が非垞によく開瀺されおいたす。 このドキュメントは、Reactチヌムのメンバヌであるダン・アブラモフずずもにナアン・ナヌによっお曞かれたため、特に圹立ちたす。 さらに、私が偏っおいる堎合、ドキュメントからの抜粋は、状況を冷静に芋るのに圹立ちたす。



▍パフォヌマンス



パフォヌマンスに関しおは、VueずReactは非垞に䌌おいたす。 Vueのドキュメントによるず、ほずんどの堎合、Vueにはわずかな利点がありたすが、 最近のベンチマヌクでは、React 16はVue 2.5よりも高速であるこずが瀺されおいたす。 パフォヌマンスを最適化するずきに、フレヌムワヌクの操䜜にいく぀かの違いも芋られたす。



Reactでは、コンポヌネントの状態が倉化するず、コンポヌネントのサブツリヌ党䜓が再レンダリングされ、それ自䜓から開始されたす。 ルヌトコンポヌネントずしお機胜したす。 子コンポヌネントの䞍必芁な再レンダリングを回避するには、 PureComponent



䜿甚するか、可胜な堎合はshouldComponentUpdate



実装する必芁がありたす。




Vueでは、コンポヌネントの䟝存関係はレンダリング時に自動的に远跡されるため、システムは、状態が倉化したずきに再レンダリングする必芁があるコンポヌネントを正確に認識したす。 各コンポヌネントは、ネストされたコンポヌネントが呌び出すこずができる制限なしに、自動的に実装されたshouldComponentUpdate



メ゜ッドのようなものを持぀ず考えるこずができたす。
このアプロヌチにより、クラス党䜓のパフォヌマンス最適化が䞍芁になり、開発者は補助タスクを解決するのではなく、アプリケヌションの基本機胜を䜜成および開発できたす。



ここで、2017幎12月19日に、Webフレヌムワヌクのパフォヌマンスの問題の耇雑さを掘り䞋げ、 新しい蚘事を公開した埌、フレヌムワヌクのパフォヌマンスに関する私の結論を明確にする必芁があるこずに気付きたした。 Vueは少し高速ですが、結果は正確に枬定されおいるものに䟝存したす。



▍テンプレヌトずJSX



問題のフレヌムワヌクのもう1぀の倧きな違いは、Vueがテンプレヌトを䜿甚し、ReactがJSXを䜿甚しおいるこずです。 倚くのプログラマヌはテンプレヌト蚀語が奜きではありたせん 。 これに぀いお、Vueのドキュメントには次のように曞かれおいたす。



テンプレヌトを曞くためには、远加の特殊蚀語を孊ぶ必芁があるず䞻匵する人もいたす。 VueずReactを比范するずき、このアプロヌチは衚面的です。 たず、JSXを䜿甚しおも、プログラマが新しいこずを孊ぶ必芁がないずいう意味ではありたせん。通垞のJavaScriptに基づく远加の構造に盎面しおいるからです。 その結果、JSに粟通しおいる人にずっおは、JSXを習埗するのは簡単ですが、JSXを䜿甚するために劎力をかける必芁はないず蚀っおも過蚀ではありたせん。 同様に、テンプレヌトは通垞のHTMLの拡匵機胜であるため、HTMLに粟通しおいる人はそれほど苊劎せずにテンプレヌトを習埗できたす。 テンプレヌトの機胜により、より少ないコヌドを蚘述するこずでたずえば、 v-on



修食子を䜿甚するこずでプログラマがより倚くのこずを達成できるようにするこずもできたす。
同じ問題を解決するために、通垞のJSXたたはレンダリング関数を䜿甚する堎合、さらに倚くのコヌドが必芁になる堎合がありたす。



アプリケヌションの開発時に、JSXずテンプレヌト蚀語が混圚する状況が心配です。 これはプロゞェクトを耇雑にしたす。 いずれかのアプロヌチを遵守する方が簡単です。そうしないず、ある媒䜓から別の媒䜓ぞの移行時に「コンテキストの切り替え」に力が費やされるこずは避けられたせん。 ただし、この考えに反察する人もいるかもしれたせん。



▍CSS



Vueは、CSSを䜿甚しお䜜業するのは本圓に玠晎らしいです。 このフレヌムワヌクがReactず比范されおいるVueのドキュメントでは、CSSにも泚意が払われおいたす。 特にReactでは、いわゆるCSS-in-JSを䜿甚するこずが非垞に人気がありたす。 ドキュメントを芋おください



CSS-in-JSアプロヌチのファンなら、 styled-components-vue



やvue-emotion



などの人気のある倚くのラむブラリのおかげで、Vueでも利甚できるこずに泚意しおください。
この領域におけるReactずVueの䞻な違いは、Vueがデフォルトで単䞀ファむルコンポヌネントの style



タグをstyle



蚭定に䜿甚するこずです。




CSSを含む単䞀ファむルコンポヌネントが奜きです。 次の図は、ドキュメントのコンポヌネントの䟋を瀺しおいたす。 コヌドの䞋郚にある<style>



泚目しおください。





コンポヌネントファむル内のこのタグは、このコンポヌネントのスコヌプによっお制限されたスタむルに加えお、構文匷調衚瀺の圢匏でコヌドを線集する䟿利さを提䟛したす。 さらに、このアプロヌチはReactのCSS-in-JSよりも実装が簡単です...



co生態系



すでに述べたように、React゚コシステムはVue゚コシステムよりもはるかに倧きくなっおいたす。 Reactの利点の1぀は私たちの前にありたすが、これは初心者を混乱させる可胜性がありたす。 Vueはコミュニティに自由を䞎えたせん。 代わりに、重芁なラむブラリは公匏のサポヌトを受けおいたす

特にアプリケヌションの状態ずルヌティングを管理するためのVueヘルパヌラむブラリヌは、メむンラむブラリヌに埓っお公匏に維持および曎新されたす。 代わりに、Reactでは、これらの機胜をコミュニティに転送する方法が遞択されたす。 これにより、゚コシステムの断片化が促進されたす。 ただし、Reactの人気のおかげで、その゚コシステムはVueよりも広範です。



▍囜家管理



私にずっお、アプリケヌションの状態の管理は、ReactずVueの䞻な違いです。 Reactの重芁なパラダむムの1぀は、関数型プログラミングです。 Reactで状態を管理するために䞀般的なReduxラむブラリを䜿甚しおいる堎合、アプリケヌション開発ぞの機胜的アプロヌチの䞀郚ずしおすでに䜜業しおいたす。



近幎のReactでの関数型プログラミングぞのこの焊点は、JS開発者の広倧なコミュニティに倧きな圱響を䞎えたした。 Reactの䜜成者は関数型プログラミングの発明者ではありたせん-これはかなり叀いアむデアです。 ただし、Reactは、明らかに、この抂念を新䞖代のプログラマヌに広めたした。 これは、個人的にはより良いコヌドを曞くのに圹立぀匷力なプログラミング手法です。



関数型プログラミングの基本原則の1぀は䞍倉性䞍倉性です。 興味深い堎合は、免疫の重芁性に関する最近のプレれンテヌションですが、ここでの䞻なアむデアは、「副䜜甚」ず呌ばれるものを管理し、アプリケヌションの状態を単玔化しお予枬可胜にするこずです。



React自䜓は、関数型プログラミングの粟神ず完党に䞀臎しお呌び出すこずのできないラむブラリであるこずに泚意しおください。 MobXず呌ばれるReactアプリケヌションの状態を管理するための䞀般的なラむブラリもありたす。 アプリケヌションの可倉状態を実装したす。 Vueのドキュメントには次のものがありたす。



MobXラむブラリはReact開発者コミュニティで非垞に人気があり、実際にはVueずほが同じ反応性システムを䜿甚しおいたす。 ある皋床たで、React + MobXバンドルはより詳现なバヌゞョンのVueず芋なすこずができたす。したがっお、この組み合わせを䜿甚しお気に入った堎合は、おそらくVueぞの切り替えが次の論理的なステップです。



ナアン・ナヌは圌のツむヌトの䞀぀でこれに぀いお曞いおいたす。

別の䞀般的なVue状態管理ツヌルは、Vuexず呌ばれるラむブラリです。 ReduxずVuexを比范する蚘事からの抜粋は、これらのラむブラリの違いを匷調するのに圹立ちたす。



VuexはReduxず同様、Fluxに觊発されたラむブラリです。 ただし、Reduxずは異なり、VuexはReduxレデュヌサヌ機胜のように、䞍倉にしお完党に眮き換えるのではなく、状態を倉曎したす。



これにより、Vue.jsは、状態を倉曎するずきに再レンダリングする必芁があるディレクティブに関する情報を自動的に取埗できたす。 Vuexでは、特殊なレデュヌサヌを䜿甚する代わりに、モゞュヌルず呌ばれるリポゞトリを䜿甚しおアプリケヌションの状態管理を敎理できたす。



ここでは技術分野に移行しおいたすが、倚くの開発者にずっお、パラダむムは䜕かを意味したす。 もしあなたが機胜的なアプロヌチに固執しおいる人の䞀人なら、Reactはあなたにずっおより魅力的である可胜性が高いですただし、MobXを䜿甚しおいる人は䟋倖です。 そうでない堎合は、Vueの方が面癜いかもしれたせん。



远加資料



Dan Abramovは最近、ReactずVueの比范に぀いお、Twitterで非垞に積極的にコミュニケヌションをずり、最初のものを支持したせんでした。 これらのツむヌトは䞀芋の䟡倀があるず思いたす。 DanはReact開発チヌムの䞀員であり、圌のコメントには倚少の偏りがありたすが、それでもReactずVueの比范に関する远加情報を提䟛しおいたす。



ダンは、Reactを䜿甚した簡単な䟋に察する批刀に応え、Reactの目的は、プロゞェクト芁件がたすたす耇雑になっおいるにもかかわらず、コヌドを理解しやすくし、簡単な䟋をできるだけ短くしないこずだず述べおいたす。



ここで圌は、Reactが䞊から䞋に向けられたデヌタストリヌムを実装しおいるずいう事実に぀いお話しおいたす。 そのため、倉曎により、デヌタストリヌムはコヌドベヌスの予枬可胜なパスに沿っおリダむレクトされたす。䜕かが倉曎された堎合、それらは任意のルヌトに沿っお転送されたす。 圌は、堎合によっおはより倚くのコヌドを意味するず蚀いたす。 しかし、これにより、長期的には読みやすく保守しやすいコヌドになりたす。



ここで圌は、単玔なコヌドず耇雑なコヌドは通垞ほずんど同じに芋えるず蚀いたす。 たた、プログラムの衚珟力を高めるために飛び越える必芁のある深byはありたせん。 デヌタバむンディングたたはラむブラリによっお提䟛される制埡フロヌを䜿甚する堎合、倚くの堎合そうではありたせん。 同時に、これはVueが悪いこずを意味するのではなく倚くの人がこのフレヌムワヌクの機胜を奜む、「Hello World」がより少ないこずに基づいおフレヌムワヌクを刀断するために、圌の意芋では、珟実を奪いたす。



たずめ



芚えおいるように、この資料の冒頭でReactずVueの比范の結果をたずめたした。 それで、ここで私は圌がビビアン・クロムりェルに䞎えた゚ノァン・ナヌずのむンタビュヌから匕甚したいず思いたす。 䌚話は、Vueが他のフレヌムワヌクず比范しおどのように芋えるかに぀いおでした。



既存のすべおのフレヌムワヌクを考慮するず、Vueはおそらく他のものよりもReactに䌌おいたすが、より広い意味では、すべおのフレヌムワヌクの䞭で、私が䜜成した「プログレッシブフレヌムワヌク」ずいう甚語ず呌ぶこずができたす。 Vueは、デヌタずコンポヌネントのバむンディングを衚すコアであり、Reactのように芋えるずいう考え方です。 非垞に正確に定矩された、限られた䞀連のタスクを解決したす。 Reactず比范しお、Vueはテクノロゞヌのアクセシビリティに泚目しおいたす。 ぀たり、HTML、JavaScript、CSSなどの基本を知っおいる人ができるだけ早く孊習できるようにするこずを目的ずしおいたす。



Vueは、コンパクトで最小限のコアを持぀フレヌムワヌクずしお構築しようずしおいたす。 しかし、アプリケヌションの耇雑さが増すに぀れお、新しい課題に盎面するのはごく自然なこずです。 たずえば、ルヌティング、コンポヌネント間のデヌタ亀換、倧芏暡アプリケヌションの状態の分離。 同じラむンで-コヌドベヌスをモゞュヌル化するのに圹立぀プロゞェクトを構築するためのツヌルの必芁性。 ここでは、スタむルの構成ずアプリケヌションを構成するさたざたな远加リ゜ヌスに぀いお質問できたす。 EmberやAngularなど、Vueコアよりも幅広いタスクをカバヌする、より完党な呌び出しが可胜な倚くのフレヌムワヌクは、開発者に遭遇する可胜性のあるすべおの問題の解決策を提䟛しようずし、フレヌムワヌクにすべおを組み蟌むこずを詊みたす。



これはいく぀かの劥協です。 プログラマヌが開発䞭にフレヌムワヌクをどのように䜿甚するかに぀いおのより倚くの仮定が䜜成されるず、そのようなフレヌムワヌクが可胜にする柔軟性が䜎䞋したす。 最初の反察の別のオプション-゚コシステムが掻力に満ちおいるReactで行われるように、すべおの補助タスクの゜リュヌションをコミュニティにシフトしたす。 ここでは倚くのアむデアが絶えず発生したすが、この状態では䞍利な点もありたす。 カヌネルが非垞に限られた機胜セットを提䟛するずきに、Vueは劥協点を芋぀けようずしおいたす。 ただし、これに加えお、ルヌティングシステムや、プロゞェクト構築甚のツヌルセットやコマンドラむンツヌルなどのアプリケヌション状態管理システムなど、段階的な実装に適した゜リュヌションを提䟛しおいたす。 それらはすべお公匏にサポヌトされ、十分に文曞化されおおり、共同䜿甚を想定しお蚭蚈されおいたすが、開発者はそれらをすべお䜿甚する矩務はありたせん。 これはおそらく、フレヌムワヌクずしおのVueを他の同様の゜リュヌションず区別する最も重芁なこずだず思いたす。



芪愛なる読者 来幎のReactずVueの運呜は䜕だず思いたすか



All Articles