Angular vs React. Или новият Angular наистина е лайна?

Здравейте всички,

Искам да говоря за най-популярните рамки на JavaScript. Според мен има куп безполезни статии за сравнение. Въпреки че съдържат наистина интересни прозрения, няма много полза от това.

Много хора казват, че не можете да ги сравните, защото Angular е рамка, а React е библиотека. От друга страна, повечето реагиращи разработчици (тези, които познавам) добавят някои библиотеки и ги превръщат в цялостна рамка.

Чакай, може би нещо друго?

Наистина съм любопитен за Angular и бих го избрал за малки и средни приложения, но за наистина големи, несъмнено, бих хакнал с React. Но има много други опции. А някои от тях се справят наистина добре, например VueJS или EmberJs изглеждат наистина добре. Но мисля, че основното конкурентно предимство за Angular и React е общността на разработчиците. Единствената либ, която може да бъде в крак с тяхната популярност, е jQuery, но нека не считаме jQuery за конкурент на тези двама.

Така че нека започнем Кое е по-добро, ъглово или реагиращо?

Управление на държавата

Мисля, че най-голямата разлика между Angular и React е управлението на държавата. Angular се предлага с обвързващи данни в пакет, докато React обикновено не може да живее дълъг живот без Redux, който осигурява еднопосочен поток от данни и работа с неизменни данни. Това води до много дискусии, кое е по-добре? Обвързване на данни или неизменно / еднопосочно свързване? Със сигурност зависи от много аспекти.

темплейт

Мисля, че наистина си заслужава да споменем колко лесно Angular работи с шаблони. Имайки прост потребителски интерфейс за вашите данни, Angular ви позволява да получите желания резултат с по-логичния подход към потребителския интерфейс, който изисква по-малко код и изглежда по-очевиден.

React изисква функции за обработка на представяне на данни. Това означава, че трябва да определите начина, по който вашите данни се показват, преди да бъдат вкарани в DOM.

Размери и производителност

Както знаем, ъгловият размер на файла е много по-голям от Reacts.

Ъглов 2 + Rx = 766K
Реагирайте 0.14.5 + Реагирайте DOM + Redux = 139K

GZipped версии

Ъглов 2 + Rx = 143K
Реагирайте 0.14.5 + Реагирайте DOM + Redux = 42K

Но когато започнете да включвате много библиотеки на трети страни с React, размерът на пакета също има тенденция да нараства доста бързо.

Ъгловата 2 производителност може да причини някои проблеми, когато става въпрос за наистина големи приложения, тъй като създава наблюдател за всяко свързване, за да се проследят всички промени в DOM.

От друга страна, React въведе в живота виртуална концепция DOM. Всеки път, когато основните данни се променят в приложението React, се създава ново виртуално DOM представяне на потребителския интерфейс. С други думи, всеки път, когато потребител взаимодейства с уебсайта React, създава нов виртуален DOM. Ето защо производителността на React е стабилна, когато става въпрос за много данни, тъй като няма наблюдатели.

CLI

Модерните рамкови тенденции имат CLI инструмент. Ъгловата CLI се справя доста добре и спестява много време. Благодарение на Angular-cli и неговия дизайн, Angular е лесен за мащабиране. От друга страна, React има собствен CLI, който беше представен наскоро, не се използва толкова много.

Отстраняване на грешки

Интересно е как всеки от тях се справя с отстраняване на грешки. Ъглов 2 и времето за отстраняване на грешки по време на изпълнение има тенденция да ви предоставя по-малко информация от React и това е време за отстраняване на грешки.

TypeScript и поток

TypeScript и Flow са подобни инструменти, които се фокусират върху един и същ проблем: липсата на статични типове в JavaScript. В крайна сметка и двамата съществуват, за да ви помогнат да напишете правилен код. Както TypeScript, така и Flow осигуряват постепенни възможности за статично писане. Те също използват подобен синтаксис за типове пояснения и файлове с декларации.

Ако работите с Angular, може да предпочитате TypeScript, тъй като това е доминиращият език, използван в Angular общността. Ако използвате React, от друга страна, може да предпочетете Flow, защото той лесно се интегрира с Babel и друга инфраструктура, която вероятно вече имате.

Много разработчици (особено React) се страхуват от TypeScript. Няма от какво да се страхуваме. Това е само ES6 + типове. ES6 е валиден TypeScript код. Той е силно повлиян от Java и .NET, така че ако един програмист има фон на един от тези езици, те вероятно ще намерят TypeScript по-лесен за научаване от обикновения JavaScript.

Процес на обучение

В Angular има какво да научите повече, отколкото в React. От друга страна, трябва да научите много за най-добрите практики на React, тъй като има много начини, по които можете да направите същото или да се объркате.

Ъглова репутация и коя ъглова версия трябва да използвате?

Знам, че Angular се третира несправедливо от JavaScript общността. Много хора изразяват недоволството си от него. Всъщност има някои причини за това, но мисля, че Angular 4 реши много проблеми. Имаше огромно изместване от оригиналния AngularJS към новия Angular. Производителността и дизайна бяха значително подобрени в Angular 2.0 в сравнение с Angular 1 (според мен, трябва да използвате Angular 1 само ако сте експерт в него и имате строги срокове). Мисля, че това е много продуктивна рамка, която би могла да бъде много по-успешна, ако нямаше толкова много версии, толкова много промени. Имах шанс да променя версията на Angular от кандидат за освобождаване 5 на 6 и след това към версията за издаване. Това почти означаваше пренаписване на цели приложения. Но сега, Angular 4 изглежда наистина стабилен и надежден.

заключение

Значи новото ъглово наистина е лайна?

Не, не е.

Ето моят списък с употреби Angular-React.

Ако харесвате шаблони, използвайте Angular.
За големи екипи и проекти React ще бъде по-добро решение, защото ви позволява да използвате повторно компоненти с по-малко код и по-бързо прототипиране.
Ако не искате да отделяте много време за настройка, използвайте Angular.
За JS експерти и ентусиасти React ще бъде по-лесен за овладяване.
По-добре, ако опитате и двете :)