В чем концептуальный смысл ухода с jQuery на более современные front end инструменты?
Всем привет.
В современном фронтенде я совсем новичок, хоть и занимаюсь программированием уже не первый десяток лет.
В плане фронтенда я застрял на уровне года 2012 (а может и еще раньше). То есть - jQuery - и плагины к ней. Никаких lodash, underscore и, там более, JS фреймворков/модных либ :)
Сейчас появилось время и новый проект я решил начать на Rails + Vue.js. Все красиво, все нравится, но я не понимаю (не вижу) сильного профита. Вот сильные стороны, которые я вижу (и сам же отвечаю, почему и до этого это не было проблемой).
Сразу говорю, я сравниваю не голый фронтенд на jQuery и голый фронтенд Vue.js, а именно разработку на рельсах с jQuery во фронте и разработку на рельсах с Vue.js во фронте (а не Rails API + Vue.js SPA).
- В Vue.js можно создавать свои компоненты и использовать их по много раз. Но так и в rails можно партиалы делать и так же реюзать их.
- В Vue.js у каждого компонента все в одном файле. И шаблон и данные и стили. Удобно, да, но и в прошлых проектах я разбивал стили/скрипты на отдельные мелкие файлы и не испытывал проблем открыть сразу нужный файл.
- В Vue.js (да и не только) не замусоривается глобальная область видимости. Но и в проектах на рельсах все скрипты у меня были в своих неймспейсах и в window экспортировались только те функции, которые должны быть доступны извне.
- В Vue.js есть вычисляемые выражения, но и в rails есть вью хелперы, куда все это можно засунуть.
... может еще что-то забыл, но все, что у меня возникало в голове, тут же находило аналогичный отклик "так ведь я это уже делал"
Сейчас конечно, чувствуются некоторые неудобства, например передача пропсов из рельсов в vue, невозможность использовать методы моделей в отображениях (приходится данные заранее готовить в контроллере/вью хелперах), но это все дело привычки.
Так вот. Вопрос в заголовке :)
P.S. Проект на рельсах, который я все время в пример ставлю - это не "поделка на коленке", а довольно серьезный проект с несколькими сотнями партнеров и сотнями тысяч пользователей (ну и тысячами строк кода).
P.P.S. Всех с наступающим!
невозможность использовать методы моделей в отображениях (приходится данные заранее готовить в контроллере/вью хелперах)
Вообще-то, так и надо. Но лучше всё-же их готовить в одном месте (presenter'е, так сказать).
Я и сам делаю личный проектик на таком стеке. Только стараюсь максимально разделять эти два компонента. А в дальнейшем заменить рельсы.
А так из плюсов vue.js могу отметить более удобную реализацию динамических полей. Позволяет избавится от "accepts_nested_attributes_for", "fields_for" и каши в html, js и хелперах. Всё получается наглядно и на своих местах. Хммм... хотя, думаю, это можно сделать и без vue.
Сергей, наверное, я слишком плохо знаю vue, чтобы увидеть где он что упрощает. Мне кажется, что это как на самосвале за хлебушком съездить - результат будет, конечно, но зачем?
Выгода от использования Vue в сравнении с jquery заметна уже после того, как на атрибут disabled кнопки в форме влияет 2 и более условий, не говоря о состоянии других элементов. Если отображение ваших элементов на странице не зависит от состояния других объектов, то значит вам и правда не нужны фреймворки. Они требуются, если вы пилите нечто более-менее динамичное.
Я последовательность не соблюдал, но согласен, подправлю.
А про анимации - одного Вью вполне достаточно, чтобы полностью закрыть потребность в них. Но использовать его только ради этого не стоит.
все зависит от сложности сайта. совсем простые обойдутся без application фреймворков, остальные нет. с границей сложности не все так просто. что то конкретное советовать не видя сайта это от лукавого. много видел личных кабинетов на angular( vue черпал идеи именно у него). петросбыт и госуслуги например. песочница plunker. всякие инетбанки. встечается когда spa фреймворк реализуют только под конкретные фичи. например, фильтр товаров и корзина у магаза петрович