Angular 2 vs.Reactそしお血が流れたす

翻蚳、 オリゞナル蚘事 

Angular 2はベヌタ版に到達し、2016幎にトップ゚ンドフレヌムワヌクの栄光を打ち砎るチャンスがありたす。 察決時間。 2015幎の最愛の人、Reactずの察比を芋おみたしょう。

免責事項最初のAngularで䜜業したしたが、2015幎にReactに切り替えたした。 Complete React and Flux Courseを発行したした。 そう、私は偏芋がありたす。 しかし、私は䞡偎を攻撃したす。

さあ、始めたしょう。 そしお、血がありたす。



あなたは䞞くお柔らかいを比范したす。


*ため息*はい、Angularはフレヌムワヌクであり、Reactはラむブラリです。 誰かが違いがこれらのものを比類のないものにしおいるず蚀うでしょう。 どんなに

AngularずReactの遞択は、ビルドされたデスクトップPCを遞択するこずず、個別のコンポヌネントから独自のPCを組み立おるこずに䌌おいたす。

この投皿では、本質的にこれら2぀のアプロヌチに぀いお説明したす。 ReactずAngularの構文ずコンポヌネントモデルを比范したす。 これは、完成したCPUずraw CPU 1を比范する方法です。 ぀たり ゜フトず゜フトを比范しおください。

Angular 2の利点

Reactに察するAngular 2の利点を芋おみたしょう。

クむックスタヌト


Angularは、より倚くの機胜をすぐに䜿甚できるフレヌムワヌクです。 Reactでは、アプリケヌションをビルドするためにサヌドパヌティラむブラリのプヌルをプルする必芁がありたす。 もちろん、ルヌティング、単方向フロヌの線成、APIぞのアクセス、テスト、䟝存関係マネヌゞャヌなどのラむブラリが必芁です。 ゜リュヌションの数は非垞に広範囲です。 そのため、Reactには倚くのスタヌタヌパックがありたす 2぀ 投皿したした 2 。

Angularは、倚くの意思決定を行うこずを恐れるこずなくすぐに䜿い始めるのに圹立぀倚くのすぐに䜿える゜リュヌションを提䟛したす。 統合゜リュヌションは、開発者が開発プロセスに再入するこずなくプロゞェクトを倉曎するのにも圹立ちたす。

Angular開発者がTypeScriptを習埗しおいるこずを嬉しく思いたす。これにより、次の利点が埗られたす...

TypeScript =玔床のパス


もちろん、TypeScriptには普遍的な厇拝はありたせんが、Angular 2で䜿甚するこずは倧きな勝利です。 Web党䜓で、Reactの2぀の䜿甚法に遭遇したす。これはES5ずES6でほが同じように衚され、 コンポヌネントを宣蚀するための3぀の異なるオプションに぀ながりたす 。 これは初心者を混乱させたす。 確かに、Angularは拡匵機胜の代わりにデコレヌタを䜿甚するこずを提案しおいたす。倚くの人がこれを利点ず考えおいたす。

Angular 2がTypeScriptを必芁ずしない堎合、開発チヌムはデフォルトでドキュメントでTypeScriptを䜿甚し続けたす。 これは、オヌプン゜ヌスプロゞェクトず関連するサンプルがコヌドをより均䞀にするこずを意味したす。 AngularはすでにTypeScriptコンパむラの䜿甚方法を瀺す実䟋を提䟛しおいたす。 私は、TypeScriptの広範な普及がただ利甚可胜ではないこずを認めなければなりたせんが、発売埌すぐにそれが事実䞊の暙準になるず思いたす。 このアプロヌチは、Reactで䜜業を開始するずきに珍しいこずではなく、誀解を避けるのに圹立ちたす。

流出削枛


2015幎はJavascriptの疲劎の幎でした。 反応は重芁な芁玠でした。 Reactがバヌゞョン1.0に到達しなかったずいう事実は、将来の重芁な倉曎に぀いお教えおくれたす。 React゚コシステムは、特にFluxシェヌドずルヌティングに関しお、急激なペヌスで発展しおいたす。 これは、React 1.0がリリヌスされるず、今日曞くすべおが陳腐化する可胜性が高いこずを意味し、ほずんどの堎合、完党に曞き盎す必芁がありたす。

この意味で、Angular 2は包括的なフレヌムワヌクを培底的か぀系統的に再考したものです。 したがっお、Angular 2では、リリヌス埌にこのような顧客の流出や頭痛が発生するこずはありたせん。 たた、党䜓的なフレヌムワヌクずしお、Angularは1぀のチヌムが提瀺する長期的な゜リュヌションにより適しおいたす。 Reactでは、急速に開発されおいる倚くのオヌプン゜ヌスラむブラリを1぀の安定したアプリケヌションにたずめる責任がありたす。 これは、面倒で䞍快で継続的なプロセスです。

ナビキタスサポヌト


以䞋に瀺すように、JSXは玠晎らしい成果だず思いたす。 ただし、JSX察応のツヌルが必芁です。 Reactは非垞に人気が高たっおいるため、ツヌルはもはや問題ではありたせん。 しかし、IDEやリンタヌなどの新しいツヌルは、 3日目の初日にこの圢匏をすぐにサポヌトするこずはたずありたせん。 文字列たたは個別のHTMLファむルに栌玍されたAngularマヌクアップテンプレヌトは、個別のサポヌトツヌルを必芁ずしたせんただし、Angular文字列テンプレヌトをその堎で操䜜するためのスマヌトツヌルは既にありたす。 Angularアプロヌチには倚くの萜ずし穎があり、Reactの利点のトピックに察する優れたアむラむナヌずしお機胜しおいるず蚀いたいのですが...

Reactの利点


では、Reactが提䟛するものを芋おみたしょう。

Jsx


JSXは、JavaScriptでコンパむルされたHTMLに䌌た構文です。 マヌクアップずコヌドは同じファむルにありたす。 この゜リュヌションを䜿甚するず、関数、コンポヌネント、および倉数ぞのリンクを挿入できたす。 逆に、Angularラむンテンプレヌトには明らかな欠点がありたす。倚くの゚ディタヌには構文の匷調衚瀺がなく、コヌド内の゚ラヌの自動コンパむルず匷調衚瀺は完党にサポヌトされおいたせん。 これはひどい゚ラヌメッセヌゞに぀ながるはずですが、Angularチヌムは独自のHTMLパヌサヌを䜜成したした。 ブラボヌ

Angular小文字のテンプレヌトが気に入らない堎合は、テンプレヌトを別のファむルに入れるこずができたすが、それから「昔」ず呌ばれるものを手に入れるこずができたす。 React内での生掻を楜しむたで、これは倧きな問題ではないようです。 構文チェック付きの単䞀ファむル内のコンポヌネントは、これがJSXの優䜍性の最も重芁な理由の1぀です。

Angular 2ずReactが閉じられおいないタグを凊理する方法を比范しおください。
JSXの利点のより良い理解に぀いおは、 JSXThe Other Side of the Coinを参照しおください

バグに察応-高速か぀明確


ReactのJSXでタむプミスをするず、コンパむルしたくないでしょう。 これは玠晎らしいこずです。 ゚ラヌがどの行にあるかがすぐにわかりたす。 これが閉じられおいないタグたたは宣蚀された倉数ぞの参照であるこずは明らかです。 実際、 JSXコンパむラヌは、間違えた行番号を瀺したす 。 これにより、開発速床が倧幅に向䞊したす。

逆に、Angular 2で倉数の参照を間違えた堎合、䜕も起こりたせん。 Angular 2は、コンパむルするのではなく、実行時に静かにクラッシュしたす。 そのような゚ラヌは遅いです。 アプリケヌションを実行し、なぜデヌタが衚瀺されないのか疑問に思いたす。 それは十分に楜しいものではありたせん。

React JavaScript䞭心4


ここにある。 これは、ReactずAngularの重芁な違いです。 残念ながら、AngularはHTML指向のたたです。 Angular 2は、最も基本的なアヌキテクチャの問題を解決できたせんでした。

Angular 2は匕き続きJSをHTMLに入れたす。 ReactはHTMLをJSに配眮したす

私はこの分裂を十分に匷調したせんでした。 これは、開発経隓に根本的に圱響したす。 Angular HTMLでは、指向蚭蚈は䟝然ずしお匱点です。 JSXThe Other Side of the Coinで匷調したように、JavaScriptはHTMLよりも匷力です。 ロゞックでHTMLを拡匵するよりも、マヌクアップサポヌトのためにJavaScript機胜を匷化する方がはるかに論理的です。 HTMLずJavaScriptはただ䜕らかの圢で結び付けられおいるはずであり、JavaScript指向のReactアプロヌチは、HTML指向のアプロヌチでAngular、Ember、Knockoutよりも明確に優れおいたす。

それが理由です...

JavaScript指向のReact =シンプルさ


Angular 2は、HTMLをより匷力にするために、バヌゞョン1のアプロヌチを継続しおいたす。 したがっお、ルヌプや条件ステヌトメントなどの単玔なものには、Angularの特別な構文を䜿甚する必芁がありたす。 たずえば、Angularは、䞀方向ず双方向のデヌタバむンディングに異なる構文を提䟛したす。
{{myVar}} //One-way binding
ngModel="myVar" //Two-way binding

React, ( , , ). :
{myVar}

Angular :
<ul>
  <li *ngFor="#hero of heroes">
    {{hero.name}}
  </li>
</ul>

. .

Angular, React «» JS: ( key ).
<ul>
  {heroes.map(hero =>
    <li key={hero.id}>{hero.name}</li>
  )}
</ul>

JS. React JSX JS .

Angular 2 Cheat Sheet. HTML. JavaScript. Angular.
Angular Angular
React JavaScript

React . JavaScript /:
Ember: {{# each}}
Angular 1: ng-repeat
Angular 2: ngFor
Knockout: data-bind=”foreach”
React: JUST USE JS. :)

, React, JS . React. JavaScript , .

Angular 2 :
(click)=”onSelect(hero)"

React JavaScript, :
onClick={this.onSelect.bind(this, hero)}

, , React ( Angular 2), .

, ? JS?


JSX , , . Hot Reloading with Time Travel .


/, :

Ember: 580k
Angular 2: 565k (759k with RxJS)
React + Redux: 204k
Angular 1: 145k

Tour of Heroes Angular React ( React React Slingshot)
Angular 2: 764k minified
React + Redux: 216k minified

Angular 2 React + Redux 5. ( Angular )

, .
, , , , . , , .
,
— Tom Dale

. Angular Ember .

, , . , React . 200 000 npm .

React UNIX

React . , Angular Ember. React, , , . . JavaScript , React .

Unix . :
, ,
React , , . . ( Angular )


Angular 2 1. , / , 3–10 . Angular 2 React. , , “JavaScript ”.

Angular 2 . Angular HTML- JavaScript- React. React, HTML ngWhatever. JavaScript. .

Reddit Hacker News.

: “Building Applications with React and Flux”, “Clean Code: Writing Code for Humans” Pluralsight. VinSolutions . Microsoft MVP, Telerik Developer Expert, outlierdeveloper.com

1 — , raw CPU
2 —
3 — IDE ( MS )
4 —
5 — comparable simplicity

.. ( ) React, . , . . TypeScript ES6. :)

, !

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


All Articles