Можно ли (и нужно ли) мешать фронтэнд на React.js с «обычным» фронтэндом (не SPA) в рамках одного сайта?
Здравствуйте.
Только начал изучать React и сразу по мере изучения вопрос о сфере его применимости. Суть вопроса вот в чем:
- SPA - это такая себе, специфическая тема (ну, как я ее вижу) - делать сайт (речь идет именно о сайтостроении) как SPA - далеко не всегда оправданно. В том числе, и исходя из стоимости разработки и поддержки.
С другой стороны - конечно хочется какие-то фишки иметь на сайте, типа вывода данных в интерактивной таблице, или даже просто какие-то менюхи на Ajax и т.п.
Вопрос в следующем:
- Можно ли, грубо говоря, иметь на сайте (напр. на основе Laravel) какие-то страницы - "просто-страницы" - ларавелевские вьюхи, а какие-то - приложения React?
Или это я сейчас бред пишу?))
Я просто пока не очень понимаю как это можно комбинировать, в какой степени.
А можно ли, например, весь сайт - "просто-сайт", а какой-то блок - напр. мега-меню в шапке - на React?
Надеюсь, понятно изложил суть вопроса.
Спасибо.
P.S. Можно еще и так переформулировать вопрос: могу ли я полноценно заменить React-ом - jQuery?
Вы можете иметь неограниченное количество React-модулей на странице.
Но для вашей задачи лучше подойдет Vue, так как он более удобен для частичной интеграции.
- SAP - это такая себе, специфическая тема (ну, как я ее вижу) - делать сайт (речь идет именно о сайтостроении) как SAP - далеко не всегда оправданно. В том числе, и исходя из стоимости разработки и поддержки.
Во-первых не SAP, а SPA. Во-вторых, если говорить о серьезных коммерческих проектах, то разработка SPA на React обойдется дешевле монстра "вьюхи" на Laravel + "мега-менюхи" на React. Да и поддерживать SPA будет значительно проще.
Вот вы совершенно спокойно в своей вьюхе можете подклчюить реакт, использовать https://reactjs.org/docs/react-dom.html#render, и там указать какой-то реактовый элемент, который вы хотите использовать.
И положить этот элемент куда хотите, по любому селектору - на этой ли странице, или какой то виджет для всех страниц - без разницы.