React.js — библиотека JavaScript и каркас для веб-приложений, созданный Фейсбуком. Постоянно развивается, имеет развитое сообщество. Ближайший сильный конкурент — Vue.js, тоже очень хорош и оправданно имеет массу поклонников.
SPA — Single-page application это веб-приложение или сайт, которые могут использовать единый HTML-документ как оболочку для всех страниц. Взаимодействие с пользователем происходит через динамически подгружаемые HTML, CSS, JavaScript.
SSR — Server Side Rendering — серверный рендеринг (о нём чуточку ниже).
Заголовок - Реактивные сайты против композитных: что круче
Окончание - Реактивные сайты сейчас на пике популярности технологий, но решать, конечно, только вам — мы лишь можем рассказать о тонкостях ;)
Содержание - Вода
Пожалуйста, не сочтите за критику статьи. Направление логики в ней, как мне кажется, верное, но предпосылки можно пересмотреть.
SPA - ПЕРЕЖИТОК ПРОШЛОГО
React и подобные библиотеки просто не могли (не могут и едва ли уже смогут) обеспечить серверный рендеринг. React - это только клиентский код.
Если бы у них была возможность растащить логику по отдельным файлам, они бы это сделали. Но для этого требуется SSR, чего нет. Вместо этого изобретены велосипеды для асинхронной подгрузки кусочков огромного бандла.
REACT МЕДЛЕННЫЙ
Задолго до React был "unobtrusive JavaScript", придуманный для того, чтобы правильно связывать DOM-nodes с бизнес-логикой, реализованной на JS. Unobtrusive JS очень требователен к организации кода и архитектуре решения.
Чтобы упростить задачу, React скрывает от разработчика этот интерфейс, позволяя описать в одном месте представление данных и их обработку. Это месиво в React называют компонентами.
Стало гораздо удобнее вести разработку, но расплатой за это удобство стала низкая производительность.
У REACT НЕУДАЧНАЯ АРХИТЕКТУРА
React располагает к смешиванию в одном куске кода обработки данных и их отображения. Всё это густо замешано на ООП, который дополнительно отягощен его более чем условной реализацией на Javascript (привет, prototype).
На выходе получается медленный код, который дорого и больно поддерживать.
ВЫВОД
Мы отказались от React в пользу собственного frontend фреймворк nullFront. У нас из коробки идут инструменты, позволяющие фронту эффективно решать все задачи.
Некоторые из них:
1. Серверный рендеринг (SSR)
2. Максимальная производительность web-приложений
3. Возможность реализовать любую стратегию авторизации (без backend)
4. Backend mocking на заглушках (stubs)
5. Бесшовное переключение между stubs и реальным backend. Один раз написали фронт на заглушках, переключили на back и всё работает
6. Различные способы интеграции backend
7. Встроенные инструменты CI/CD
8. Возможность достигнуть 100% покрытия кода модульными текстами
Оправданием для комментария с упоминанием другого фреймворка может быть только то, что сама статья широко упоминает другой примелькавшийся фреймворк. Суета это все. Нет такого фреймворка, на котором нельзя написать плохого приложения, в этом смысле все они одинаковые.
Однако, медлительность React и его плохая архитектура — серьезный повод задуматься. Аргумент «ничего лучше пока нет» изотрется до обидного быстро.
С «Возможности достигнуть 100% покрытия» поржал, спасибо.
«1С нашли способ разогнать. Они разработали и запатентовали технологию композитного сайта, которая магическим образом:
ускоряет загрузку в 100 раз;
улучшает ранжирование в Гугле и Яндексе;
увеличивает конверсию; подходит для любого сайта на 1С-Битрикс;»
Ой все
Комментарий недоступен
Большинству все равно нужны обычные сайты. Какой там реакт.. круто, конечно, но это для нагруженных проектов.
В том-то и беда, что React не сильно-то очень хорошо масштабируется.
Был на митапе, где спикер рассказывал, как можно повышать производительность реакт-приложений. Там много разных уловок и ухватов было представлено, но в конечном итоге всё было сведено к тому, что
1. реализовали свой маленький Redux
2. сами обработали события
3. сами ручками вызывали рендер.
Это сделали, чтобы React не обрабатывал все события, потому что их обработка тянула за собой ререндеринг 10 000 узлов DOM. И по-другому было никак: структура компонента не позволяля.
И почему никто не говорит по ангуляр?
Порог входа в Angular гораздо выше React. Что соответствующим образом отражается на стоимость владения приложением. А все хотят дешевле