Последнее время стало модно связывать php фреймворк с js фреймворком. Читаю статьи на тему, но не где не вижу обоснований, кроме общих фраз: "Это удобно", "Это снижает нагрузку на сервер".
Я не могу понять чем это удобно и где конкретно снижается нагрузка на сервер? На мой взгляд тоже можно получить при yii + jquery. Но я как человек разумный - допускаю, что могу заблуждаться. Помогите разложить по полкам.
На самом деле думаю, что не принципиально, для этого вопроса, именно yii и angular, это может быть другая пара фреймворков.
Так что же такого вкусного добавляет angular. Потому что как по мне происходит дублирование логик.
Вы сейчас выступаете в роли инквизиции, а все отвечающие (странно что все) в роли неопытных защитников Джордано Бруно. spa сегодня, это зародыши завтрашних приложений. Ведь не секрет что может сложиться ситуация, когда понятие "сайт" отойдет в прошлое и на его замену придут десктопные приложения, которые и разработчикам и пользователям принесут лишь радость.
И вот теперь подумайте, как Ваш сайт с рендером на сервере будет работать в оффлайне?
Максим Тимофеев: скорее всего через пару лет, как только microsoft откажется от поддержки windows7, все перейдут на windows10, которая заточена больше под приложения. google chrome уже практикует приложения запускаемые не в обычном браузере. так что если рассматривать конкретно это направление, то приступив к изучению уже сегодня, завтра не будешь орать "подождите".
Первое - это разделение Backend'a и Frontend'a.
Второе - удобство использования JS фреймворков, использование новых технологий (ES20**), виртуальный дом, SPA, да много чего.
И как по мне - если вы задаетесь таким вопросом, то вряд ли вам нужно это совмещать.
Вот опять общие фразы. Разделение Backend'a и Frontend'a - чем они не разделены в yii2? Удобство использования JS фреймворков - что удобного, я не противоречу, я хочу найти для себя повод изучать JS фреймворк. Но не могу его найти. Все что я читаю, можно достичь другими методами и не вижу, что б они были сложнее.
"И как по мне - если вы задаетесь таким вопросом, то вряд ли вам нужно это совмещать." - то есть не развиваться. Я уверен, что поиск ответов на такие вопросы и подталкивает к изучению нового. Такие вопросы привели меня от cms-ок к framework-ам и надеюсь поведут дальше. Но технологий слишком много, что бы хвататься за все сразу. Надо глубоко разбираться в том, что используешь. Вот я и пытаюсь понять. Это дань моде или за такими связками будущее. Может вообще завтра php не будет и надо уходить полностью в js.
Максим Тимофеев: ну а как вам это объяснить если вы еще не дошли до задач, которые требуют применения, хотя бы структуры SPA.
Для себя я заметил, что после работы с React, я уже не могу писать вещи на чистом html/jQuery, потому что привык к фишкам React'a, с Angular'ом я думаю ситуация та же.
Возьмите да напишите свой следующий проект на Angular и посмотрите на ощущения - понравилось или нет. Это как вопрос - "зачем мне шуруповерт, если у меня есть отвертка."
Антон Измайлов: Скажите а возможно ли все построить на php framework, а для некоторых модулей использовать Angular. Например, для кабинета пользователя или для определенных виджетов на сайте. Или это не сильно ускорит разработку?
Максим Тимофеев: с ангуляром не работал особо, но вроде можно. Билд ангуляра подгружаете только в определенных файлах, и указываете ng-app в body.
В реакте все проще, указываете и на someId вешаете обработчик.
Максим Тимофеев Не заморачивайтесь, используйте Yii 2.0 и для бек- и для фронтэнда, если это вам удобно. Работайте с тем, что удобно именно вам. Конечному заказчику сопли по поводу "ах какой он классный, этот ...", "ваш сайт не доделан еще, но он использует самые передовые технологии ..." нафиг не нужны. Ему нужен результат!
Вот и я переживаю, что эта игра не стоит свеч, кроме конкретных случаев. И хотел бы, что бы кто-то их озвучил. Но видимо люди бездумно используют технологии там где надо и там где не надо. При этом меня обвиняя в невежестве.
Максим Тимофеев: Ну правильно Антон говорит, зачем себе яму то рыть? Технологии в топике применяются по требованию заказчика/тим лида/друга/бреда. Если вопрос "сделать сайт", то и WP и друпал залетят, никто не пикнет против ничего.
Странный вопрос... Вы понимаете область применения Angular? Это в основном создание SPA(Single Page Applications) аки evernote. Вы никогда не сделаете нормальное SPA на jquery. Ну а если Ваши задачи не выходят за пределы "создай сайт со свистелками и перделками" тогда да, Вам Angular будет не нужен...
Тоесть если проект стандартный (так сказать, магазин например), то наверное оправдано использовать SPA для личного кабинета и корзины, но остальное делать по старинке. Или я имею неправильные представления о SPA? Есть пример сайта на Angular, которые хорошо иллюстрирует его возможности, в частности SPA архитектуры
Никита: Возникает вопрос почему и лендинг не интегрировать? Это не удобно сделать? Хотя бы регистрацию в попап, а потом уже грузить долго интерфейс одностраничника.
та пойдет любой фреймворк для бэкенда и любой для фронтэнда, не обязательно yii и angular, может быть express и react, вообще зависит от того что и зачем писать. ну Jquery в любом случае проиграет, скорей всего
Jquery возможно использовать местами. Можно ли так же поступить с js фреймворками? априемер использовать их только для кабинета пользователя, корзины товаров, тестов и т.д.
Вся логика на php (yii2), местами js (jquery) vs yii2(или аналог) + angular(или аналог) = вот в чем вопрос. Хотелось бы понять в каких проектах 2 вариант был бы оправдан. Пытаюсь придумать таковой и не могу.
Вообще да, про 'снижение нагрузки на сервер' меня всегда удивляет. Неужели лагание и тормоза клиента лучше безумных нагрузок для генерации хтмл на сервере?
не снижения нагрузки, можно и на jquery все делать, а читабельности и расширяемости кода, скорости работы программиста.
В jQuery нету ни роутов, ни дата билдинга, ни ватчеров, ни всего остального.
Хотя лично мне больше нравиться в этом плане Ember, хоть у него и выше порог вхождения, зато он может все тоже что и Angular, но в придачу его код намного легче потом поддерживать.
зачем: декларативность не показатель? про дублирование логики: что-то не ясно о чем именно идет речь? вся проблема таких статей в том, что в их заголовке указывается какой-нибудь популярный фреймворк с бэкэнд стороны и ангуляр с фронтэнд. хотя главное - это наличие rest api, написанное не важно на чем, и spa приложение на ангуляре, которое вызовы к этому api использует.
ДА я писал в вопросе, что yii не играет роли. Дублирование логики, имел в виду многократное преобразование данных (mysql->php объект->json->js объект). Декларативность? Вы имеете в виду пыль в глаза заказчику?
Максим Тимофеев: Сравните выдачу с генерацией html на серве и выдачу, например, json. Сами увидите. Если начнёте писать spa то на подобные вопросы тоже будете отвечать именно так как вам сейчас не нравится ибо другие ответы лишь общие, а этот самый точный. И да, это удобно по сравнению с ванильным js, тем более со святым jQ, но чтобы понять что это удобно, субъективно скажу, уходит много времени.
Максим Тимофеев: Почитал другие комменты...на js и серв и клиент писать можно, а может даже и нужно. Но я, например, знаю как делать сложные штучки на php и немного js, мне этого вполне хватит написать нормальный SPA. А чтоб писать и серв на js это надо осваивать что-то новое, тратить время...для себя - норм, для работы - трата времени, возможно, не оправданная. Сроки всегда давят и обычно работу надо выполнить вчера.
Никита: Вот в этом то и дело. Написать SPA можно с помощью коробочного PJAX в yii. Пытаюсь понять если изюм в ангулар, который не достижим другими средствами.
Максим Тимофеев: "Написать SPA можно с помощью коробочного PJAX в yii." Представьте, что нужно на некоторых страничках менять хедер, на других меню, на третьих вообще всю верстку страницы (допустим лендинг), я с этого момента перешёл из pjax на React Js благо времени было полно.
Никита: Менять layouts, все верстать виджетами, брать из params список виджетов, которые отображать. Не вижу в этом проблемы. Зато это проще оптимизировать на мой взгляд. Единственный плюс angular вижу пока только в том, что он заберет чуть чуть нагрузки с сервера на браузер для рендера вьюх. Но это не всегда хорошо.
Максим Тимофеев: как вы с помощью pjax поменяете layout? Что оптимизировать там? Чего плохого в клиентском рендере? Говорю ж, попробуйте если интересно что это, все вопросы отпадут.
Никита: Менять layout не связано с pjax, это или или. Хотя наверное можно, pjax отправит запрос в контроллер там "$this->layout = 'newlayout'; Попробовать - обязательно попробую. Уже понял, что это единственный способ ответить себе на ряд вопросов.