Vinkel vs React. Eller er den nye vinkel virkelig lort?

Hej alle,

Jeg vil tale om de mest populære JavaScript-rammer. Efter min mening er der en masse unyttige sammenligningsartikler derude. Selvom de indeholder virkelig interessante indsigter, er der ikke meget brug for det.

Mange mennesker siger, at du ikke kan sammenligne dem, fordi Angular er en ramme, og React er et bibliotek. På den anden side tilføjer de fleste reaktorudviklere (dem, jeg kender) nogle biblioteker og omdanner det til en komplet ramme.

Vent, måske noget andet?

Jeg er virkelig nysgerrig efter Angular og ville vælge det til små og mellemstore applikationer, men til virkelig store, ville jeg uden tvivl hacke med React. Men der er mange andre muligheder. Og nogle af dem klarer sig virkelig godt, for eksempel ser VueJS eller EmberJs virkelig godt ud. Men jeg tror, ​​at den største konkurrencefordel for Angular and React er udviklerfællesskabet. Den eneste lib, der kan følge med deres popularitet, er jQuery, men lad os ikke betragte jQuery som en konkurrent til disse to.

Så lad os komme i gang. Hvilket er bedre, vinklet eller reagerer?

Statsledelse

Jeg tror, ​​den største forskel mellem Angular og React er statsstyring. Vinkelformet leveres med databindende bundtet, hvorimod React normalt ikke kan leve en lang levetid uden Redux, som giver ensrettet dataflyt og arbejde med uforanderlige data. Dette bringer til mange diskussioner, hvilket er bedre? Databindende eller uforanderlig / ensrettet binding? Det afhænger helt sikkert af mange aspekter.

Templatering

Jeg synes, det er virkelig værd at nævne, hvor let Angular fungerer med skabeloner. Med en simpel brugergrænseflade til dine data giver Angular dig mulighed for at få det ønskede resultat med den mere logiske tilgang til brugergrænsefladen, der kræver mindre kode og synes at være mere indlysende.

React kræver funktioner til håndtering af datarepresentation. Det betyder, at du skal definere den måde, dine data vises på, før de indsættes i DOM.

Størrelser og ydeevne

Som vi ved, er filformat på kantet meget større end Reacts.

Vinkel 2 + Rx = 766K
Reaktion 0.14.5 + Reager DOM + Redux = 139K

GZipped-versioner

Vinkel 2 + Rx = 143 K
Reaktion 0.14.5 + Reager DOM + Redux = 42K

Men når du begynder at inkludere en masse tredjepartsbiblioteker med React, har bundstørrelsen også en tendens til at vokse temmelig hurtigt.

Angular 2-ydeevne kan forårsage nogle problemer, når det kommer til rigtig store applikationer, fordi det opretter en vagter til hver binding for at spore alle ændringer i DOM.

På den anden side har React bragt virtuelt DOM-koncept ind i livet. Hver gang en underliggende data ændres i en React-app, oprettes en ny virtuel DOM-repræsentation af brugergrænsefladen. Med andre ord, hver gang en bruger interagerer med webstedet React opretter en ny virtuel DOM. Derfor er React-ydelsen stabil, når det kommer til en masse data, da der ikke er nogen seere.

CLI

Moderne rammer har tendens til at have et CLI-værktøj. Angular's CLI klarer sig ganske godt og sparer meget tid. Takket være Angular-cli og dens design er Angular let at skalere. På den anden side har React sin egen CLI, der blev introduceret for nylig, og bruges ikke så meget.

Fejlfinding

Det er interessant, hvordan hver af dem håndterer fejlsøgning. Angular 2, og det er debugging af runtime har en tendens til at give dig mindre information end React, og det er kompilering af debugging af tid.

TypeScript og flow

TypeScript og Flow er lignende værktøjer, der fokuserer på det samme problem: JavaScript's mangel på statiske typer. I sidste ende findes de begge for at hjælpe dig med at skrive korrekt kode. Både TypeScript og Flow giver gradvis statisk maskinefunktioner. De bruger også en lignende syntaks til typeanotationer og erklæringsfiler.

Hvis du arbejder med Angular, foretrækker du muligvis TypeScript, fordi det er det dominerende sprog, der bruges i Angular-samfundet. Hvis du på den anden side bruger React, foretrækker du muligvis Flow, fordi det let integreres med Babel og anden infrastruktur, du sandsynligvis allerede har på plads.

Mange udviklere (især React) er bange for TypeScript. Der er intet at være bange for. Det er bare ES6 + -typer. ES6 er en gyldig TypeScript-kode. Det er stærkt påvirket af Java og .NET, så hvis en udvikler har en baggrund på et af disse sprog, finder de sandsynligvis TypeScript lettere at lære end almindelig JavaScript.

Læringsproces

I vinkel er der flere ting at lære end i React. På den anden side skal du lære meget om React bedste praksis, da der er mange måder, du kan gøre det samme på eller gå galt.

Vinkelformat omdømme, og hvilken vinkeludgave skal du bruge?

Jeg ved, at Angular behandles uretfærdigt fra JavaScript-fællesskabet. Mange mennesker udtrykker utilfredshed med det. Der er faktisk nogle grunde til det, men jeg tror, ​​at Angular 4 løste mange problemer. Der skete et enormt skift fra det oprindelige AngularJS til det nye Angular. Ydeevne og design blev meget forbedret i Angular 2.0 sammenlignet med Angular 1 (efter min mening skal du kun bruge Angular 1, hvis du er ekspert i det og har stærke frister). Jeg synes, det er en meget produktiv ramme, der kunne være meget mere succesrig, hvis der ikke var så meget versioner, så mange ændringer. Jeg havde en chance for at ændre Angular's version fra release kandidat 5 til 6 og derefter til release version. Det betød næsten omskrivning af hele applikationerne. Men nu virker Angular 4 virkelig stabil og pålidelig.

Konklusion

Så er den nye vinkel virkelig lort?

Nej, det er det ikke.

Her er min liste over vinkelreaktive anvendelser.

Hvis du kan lide skabeloner, skal du bruge Angular.
For store teams og projekter vil React være en bedre løsning, fordi det giver dig mulighed for at genbruge komponenter med mindre kode og hurtigere prototyper.
Hvis du ikke kan lide at bruge meget tid på opsætning, skal du bruge Angular.
For JS-eksperter og entusiaster vil React være lettere at mestre.
Bedre, hvis du prøver dem begge :)