Сравнение популярности React и Angular

На днях слушал подкаст Фронтенд Юности, где ребята затронули тему того, что Angular не выбирают для лендингов. И в этот момент я подумал, что при сравнении фреймворков всегда говорится, что React - не фреймворк, а библиотека. А вот когда их сравнивают, то сравнивают @angular/core и react и у реакта значительное превосходство в популярности. Например самое популярное сравнение npmtrends @angular/core vs angular vs react vs vue

npmtrends.com-2020.09.12-angular-react.png

8 000 000 vs 1 500 000

Меня никогда не покидает мысль, что для SPA проекта длительностью более полугода или с большим количеством исполнителей или с большим количеством форм или с большим объемом асинхронного кода надо выбирать Angular. Кажется, что не должно быть такого перевеса. И тут я понимаю, что react это не только SPA, а еще ряд смежных областей, а сравнение @angular/core и react некорректно по определению.

Тогда возникает следующий вопрос: "Как более правильно сравнивать инструменты для разарботки одностраничных приложений?". И ключевое слово здесь - одностраничных. Что обеспечивает одностраничность? Правильно, роутер. Поэтому при сравнении популярности angular с другим инструментом построения SPA следует сравнивать популярность роутеров. Среди статистически значимых пакетов удалось найти только @reach/router и react-router.

screenshot-www.npmtrends.com-2020.09.12-routers.png

(3 800 000 + 2 000 000) vs 1 500 000

У Angular по-прежнему полтора миллина загрузок, а вот у React почти 6 миллионов вместо 8. Снижение на 27%, видимо столько проектов на реакте не являются классическими SPA.

@reach/router vs react-router vs @angular/router vs vue-router


Похожие записи

+function ($) { "use strict"; }(window.jQuery);

  • объявляется IIFE (немедленно выполняемая функция-выражение)
  • в функцию передаётся объект библиотеки jQuery, которая внутри будет доступна через переменную с именем $
  • включается «строгий режим»

Добавить css link и js script динамически

const link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css';
link.integrity = 'sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO'; // необязательно
link.crossOrigin = 'anonymous'; // необязательно
document.head.appendChild(link);

const script = document.createElement('script');
script.src = 'https://code.jquery.com/jquery-3.3.1.slim.min.js';
script.integrity = 'sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo'; // необязательно
s...

Builder в JS

Builder (cтроитель) - порождающий шаблон программирования. Применяется для создания сложных объектов при помощи цепочки методов someBuilder->setValueA(1)->setValueB(2)->build()