Kampas prieš reaguoti. O gal naujasis „Angular“ yra tikrai šūdas?

Sveiki visi,

Noriu pakalbėti apie populiariausias „JavaScript“ sistemas. Mano nuomone, ten yra daugybė nenaudingų palyginimo straipsnių. Nors juose yra tikrai įdomių įžvalgų, iš jų daug naudos negalima.

Daugelis žmonių sako, kad negalite jų palyginti, nes kampas yra sistema, o „React“ yra biblioteka. Kita vertus, dauguma reaguojančių kūrėjų (tuos, kuriuos žinau) prideda keletą bibliotekų ir paverčia ją visa sistema.

Palaukite, gal dar kas nors?

Man tikrai įdomu „Angular“ ir norėčiau jį pasirinkti mažoms ir vidutinėms programoms, tačiau tikrai dideliems, be abejo, nugirstu „React“. Tačiau yra daugybė kitų variantų. Ir kai kuriems iš jų sekasi tikrai gerai, pavyzdžiui, „VueJS“ ar „EmberJs“ atrodo tikrai gerai. Bet aš manau, kad pagrindinis „Angular and React“ konkurencinis pranašumas yra kūrėjų bendruomenė. Vienintelis vertybinių popierių rinkinys, galintis neatsilikti nuo jų populiarumo, yra „jQuery“, tačiau nelaikykime „jQuery“ šių dviejų konkurentų.

Taigi pradėkime tai pradėti. Kuris yra geresnis, kampinis ar reaguojantis?

Valstybės valdymas

Manau, didžiausias skirtumas tarp kampinio ir reagavimo yra valstybės valdymas. „Kampinis“ komplektuojamas su įrištais duomenimis, o „React“ paprastai negali gyventi ilgą laiką be „Redux“, kuris teikia vienkryptį duomenų srautą ir dirba su nekintamais duomenimis. Tai sukelia daug diskusijų, kas yra geriau? Duomenų įpareigojimas ar nekintamas / vienpusis įrišimas? Tai tikrai priklauso nuo daugelio aspektų.

Šabloniška

Manau, kad tikrai verta paminėti, kaip lengvai „Angular“ dirba su šablonais. Turėdamas paprastą jūsų vartotojo sąsają, „Angular“ leidžia pasiekti norimą rezultatą logiškesniu požiūriu į vartotojo sąsają, kuriai reikia mažiau kodo ir kuri atrodo akivaizdesnė.

Norint reaguoti, reikia duomenų tvarkymo funkcijų. Tai reiškia, kad turėtumėte apibrėžti, kaip jūsų duomenys bus rodomi prieš juos įdedant į DOM.

Dydžiai ir atlikimas

Kaip mes žinome, kampinio failo dydis yra daug didesnis nei „Reacts“.

Kampas 2 + Rx = 766K
Reaguoti 0.14.5 + Reaguoti DOM + Redux = 139K

GZip versijos

Kampas 2 + Rx = 143K
Reaguoti 0.14.5 + Reaguoti DOM + Redux = 42K

Bet kai jūs pradedate įtraukti daug trečiųjų šalių bibliotekų su „React“, rinkinio dydis taip pat linkęs gana greitai augti.

2 kampo našumas gali sukelti tam tikrų problemų, susijusių su tikrai didelėmis programomis, nes jis sukuria stebėtoją kiekvienam įrišimui, kad būtų galima sekti visus DOM pokyčius.

Kita vertus, „React“ įnešė į gyvenimą virtualios DOM koncepciją. Kiekvieną kartą, kai pagrindiniai duomenys keičiasi „React“ programoje, sukuriamas naujas vartotojo sąsajos virtualus DOM vaizdas. Kitaip tariant, kiekvieną kartą, kai vartotojas bendrauja su svetaine „React“, sukuria naują virtualų DOM. Štai kodėl „React“ našumas yra stabilus, kai reikia daug duomenų, nes nėra stebėtojų.

CLI

Šiuolaikinės struktūros tendencija turėti CLI įrankį. Kampinis CLI dirba gana gerai ir taupo daug laiko. Dėl „Angular-cli“ ir jo konstrukcijos, „Angular“ yra lengvai keičiamas. Kita vertus, „React“ turi savo CLI, kuri buvo pristatyta neseniai, nėra tokia naudojama.

Derinimas

Įdomu, kaip kiekvienas iš jų tvarko derinimo veiksmus. 2 kampas ir jo veikimas derinant paprastai suteikia mažiau informacijos nei „Re reaguoti“ ir kaupia derinimo laiką.

„TypeScript“ ir „Flow“

„TypeScript“ ir „Flow“ yra panašūs įrankiai, kuriuose daugiausia dėmesio skiriama tai pačiai problemai: „JavaScript“ nėra statinių tipų. Galų gale jie abu yra padėti jums parašyti teisingą kodą. Tiek „TypeScript“, tiek „Flow“ teikia laipsniškas statinio spausdinimo galimybes. Jie taip pat naudoja panašią sintaksę tipo komentare ir deklaravimo faile.

Jei dirbate su „Angular“, galbūt norėtumėte pasirinkti „TypeScript“, nes tai yra dominuojanti kalba, naudojama kampų bendruomenėje. Kita vertus, jei naudojate „React“, galbūt norėtumėte „Flow“, nes jis lengvai integruojamas su „Babel“ ir kita jūsų turima infrastruktūra.

Daugybė kūrėjų (ypač „React“) bijo „TypeScript“. Nėra ko bijoti. Tai tik ES6 + tipai. ES6 yra galiojantis „TypeScript“ kodas. Tam didelę įtaką padarė „Java“ ir .NET, taigi, jei kūrėjas turi foną viena iš šių kalbų, greičiausiai jiems bus lengviau išmokti „TypeScript“ nei paprastą „JavaScript“.

Mokymosi procesas

Kampinėje yra daugiau dalykų, kuriuos reikia išmokti nei „React“. Kita vertus, jūs turite daug sužinoti apie „React“ gerąją patirtį, nes yra daug būdų, kaip padaryti tą patį ar suklysti.

Kampinė reputacija ir kurią kampinę versiją turėtumėte naudoti?

Aš žinau, kad kampas su „JavaScript“ bendruomene yra traktuojamas nesąžiningai. Daugelis žmonių išreiškia nepasitenkinimą tuo. Tiesą sakant, tam yra keletas priežasčių, bet aš manau, kad „4 kampas“ išsprendė daug problemų. Buvo didžiulis poslinkis nuo pradinio „AngularJS“ prie naujojo „Angular“. „Angular 2.0“ veikimas ir dizainas labai pagerėjo, palyginti su 1 kampu (mano manymu, „kampą 1“ turėtumėte naudoti tik tuo atveju, jei esate jo ekspertas ir turite griežtus terminus). Manau, kad tai labai produktyvus pagrindas, kuris galėtų būti daug sėkmingesnis, jei nebūtų tiek versijų, tiek daug pakeitimų. Aš turėjau galimybę pakeisti „Angular“ versiją iš 5-osios versijos kandidato į 6, o vėliau į versiją. Tai beveik reiškė visų programų perrašymą. Tačiau dabar „Angular 4“ atrodo tikrai stabilus ir patikimas.

Išvada

Taigi ar tikrai naujasis „Angular“ yra šūdas?

Ne, taip nėra.

Čia yra mano naudojamas kampinis reagavimas.

Jei jums patinka šablonai, naudokite kampinį.
Didelėms komandoms ir projektams „React“ bus geresnis sprendimas, nes tai leidžia pakartotinai naudoti komponentus su mažiau kodo ir greitesnį prototipų sudarymą.
Jei jums nepatinka praleisti daug laiko nustatant, naudokite kampinį.
JS ekspertams ir entuziastams „React“ bus lengviau įsisavinti.
Geriau, jei išbandysite juos abu :)