Как можно использовать front-end framework для НЕ-SPA?
Приветствую!
Недавно познакомился с двумя веб-фреймворками: React и Vue.js. Оба понравились по-своему. Теперь интересует вопрос: как можно(и можно ли вообще?) их использовать в обыкновенной среде обитания и полностью отказаться от jquery и всего такого зла?
То есть когда на странице заказа, допустим, нужно одно, на странице авторизации - другое, однако нет необходимости генерировать эти странице на фронте, нет необходимости в роутерах и тд. Все делает сервер, а фреймворк добавляет интерактивности.
Rou1997: валидация форм, обработка событий, ajax и тд. все то, что делает обычный JS для одной конкретно взятой страницы. Странный у вас вопрос какой-то.
Роман Назаркин: И зачем для этого фреймворк нужен? Фреймворки специально "заточены" под роутинг, MV* и т.д., а для ajax нужен не фреймворк, а библиотека jQuery, также и для удобной работы с DOM.
Rou1997: я работал с jQuery достаточно долгое время и могу сказать, что для мелких проектов он подойдет, но на более-менее больших это уже превращается в реальную проблему.
Роман Назаркин: С чего столь странные выводы, какая связь с масштабностью проекта, которая вообще суть понятие относительное?
Впрочем, если фреймворк имеет те же средства для AJAX и DOM, то, конечно, можно из него использовать только их, но чем это лучше jQuery, библиотеки, специально для этого предназначенной?
Rou1997: суть как раз в том, что не нужно внутри фреймворка работать с DOM, там по-другому устроено. Ajax функции jquery достаточно скудны в сравнении со специализированными библиотеками которые легко можно прикрутить в свой проект при надобности.
А связь между масштабностью проекта и инструментами, которые в нем используются как раз-таки прямая. Чем больше проект, тем сложнее вести его используя jquery-way. Чтобы это понять нужен опыт, я не смогу сейчас рассказать про все возможные проблемы, но поверьте мне, их реально много и вопрос мой был вообще не о том, что тут лучше.
Роман Назаркин: уточните, пожалуйста, чем плохи ajax-функции jQuery? Насколько помню, $.ajax умеет практически все, что в принципе может понадобиться. Работу с DOM можно свести к минимуму, просто генерируя какие-то блоки по шаблонам (поможет библиотечка Underscore) и втыкая в нужные места.
А так, можно, разумеется, и ReactJS или другой фреймворк использовать безо всяких SPA-шных примочек, только возникает ощущение, что в контексте вашей задачи это будет своего рода стрельба из пушки по воробьям.
Maa-Kut: не то, чтобы они плохи, но держаться за них я бы не стал(имея fetch api, например). В вопросе я не имел ввиду какой-то конкретный кейс, но вот представим обычный сайт: есть common элементы, которые нужно обрабатывать на каждой странице, а есть специфичные для каких-либо страниц вещи, которые тоже надо бы обрабатывать. Но грузить разные JS файлы для разных страниц накладно и не решает проблему целиком(например страницы, созданные в page builder каком-нибудь, где ты не всегда можешь знать какие элементы на какой странице будут использованы).
Итак. Как мы поступим, чтобы не засорять глобальную область видимости лишними функциями и коллбэками? Можем ли мы инкапсулировать код каждого элемента, чтобы не допустить перемешивания и возникновения этой каши, когда всё в кучу? Затем представим, что проект растёт и в него а) добавляются новые разработчики и б) элементов становится на порядки больше. Я даже не представляю, что за ужас начнётся.
Поэтому и был задан вопрос по поводу фреймворков - возможно, это может спасти от подобной ситуации. Ищу решения, короче говоря)
отвечу на "То есть когда на странице заказа, допустим, нужно одно, на странице авторизации - другое", React.render можно вызвать для любого div, т.е конечно можно использовать его для написания модулей для страницы которая генерируется на сервере. Я когда изучал react в начале его использовал в связке express+jade, но по мере изучения, приходишь к мысли, что получишь от фреймворка намного больше пользы перейдя на SPA. К тому же можно его рендерить на сервере, если нужно.