Стоит ли и зачем использовать PHP на фронте, где есть Angular?
Предыстория:
Я фронтенщик и зачастую работал с NodeJS на бекенде, так сложилось, что сейчас работаю над проектом где на беке PHP ну и команда собственно PHP - разработчики :)
Иногда случаются конфузы, которые я не очень понимаю, так как не силён в бекенде, да и учу NodeJS, a не PHP
Суть:
Бекендщики часто пихают пхп код на фронт (фреймворк yii), например для проверки доступа, если доступа у персонажа нет, то мы прячем участок HTML посредством PHP.
Сейчас переписываем проект и я не хочу, чтоб на "моём" :) фронте был php :)
Но последней каплей была форма логина, которую мне предлагают сделать статичной на пхп и говорят зачем там аякс.
Я после этих моментов сижу и думаю, а зачем тут ангулар вообще?
Дайте, пожалуйста, дельные советы, либо что почитать мне, как быть?
Хелп :)
Игорь Воротнёв: например, потому что так захотели :) Они подумали "зачем нам аякс, когда можно без него, тем более что это всего лишь страница авторизации". И все.
AlikDex: ну, речь в данном топике о достаточно крупном, и вероятно, немножко high-load проекте. Если в крупном проекте разрабы задают такие вопросы и/или отсутствует человек, который принимает обдуманно такие решения (учитывая UX, оптимизацию и тд) и спускает их безголовым разрабам - проект обречен. Вот и все.
Игорь Воротнёв: ну, может и не обречен. Рановато судить по 1 странице авторизации. Даже если оно будет работать хоть и через очко, но работать. Вполне может быть успешным.
AlikDex: Дело не в 1 странице, а в подходе и методе принятия стратегически важных решений. Проект обречен, вопрос исключительно во времени - рано или позже.
К примеру сейчас работаю над крупным проектом, где нонстоп идут финансовые проводки и заказы. Бекенд, это api ресурс (rest.site.tdl) реализованый на SF3+DB(любая)+DDD/CQRS/Bus+JTW.
Он может принимать и отдавать данные в формате json.
Фронтент - это совершенно др. проект (site.tdl), который физически находится совершенно в другом месте. Реализован на Angular2 type script.
Т.е. это совершенно 2 разных проекта которые общаются по api.
Если делать по принципу - все в кучу (и так сойдет), то вполне может настать момент, когда потребуется всех уволить, нанять нормальную команду и реализовать новый проект.
Спасибо за ответ. 2й Ангулар очь интересный, но пока не достаточно скилов, чтоб вести этот проект. А по пофоду формы логина? Делать для неё сервис в ангуларе, либо отправлять данные с формы через пхп?
DarthJS: Если идет разделение на фронт/бек, то angular.
Обратно возвращается токен.
Естественно в проекте не должно быть php сессий.
Все работы происходят посредством jwt authentication
Doc: При Post запросе, то что в нетворке виден логин и пароль - обычно его шифруют? Если не сложно, посоветуй что-то толковое почитать по авторизации и защите для Ангулар апп, а то я уже кучу инфы перечитал и малость каша в голове (с защитой данных не работал раньше). Буду премного благодарен
При запросе данные будут видны всегда. По этому желательно использовать https
Далее идет проверка на беке.
Если все ок, то вам возвращается массив с ролями и токеном.
Подозреваю, ангуляр на этом проекте не нужен. От Вас, как от фронта, нужна вёрстка и, например, jQuery для прочих нужд. Того, кто решил использовать тут ангуляр окропите святой водой дабы из него бесы вышли)
Либо, если так нужен ангуляр, пусть PHP-разрабы делают бекенд, который просто общается с вашим фронтом по АПИ. Но, кажется мне, это не самое подходящее решение.
Сейчас фронтом работаю, имею опыт бекенда пару лет. Участвовал в подобных проектах с обоих сторон. Мне описанный Вами подход кажется несколько странным.
П.С. Не верно говорить про "PHP на фронте". PHP во вьюшках формирует страницы на серве и отдаёт их в уже нужном виде. Это обычной подход при использовании Yii.
А ты уверен, что тебе стоит работать над этим проектом? Если у вас нормальный rest api и при этом ведутся странные попытки "прячем участок HTML посредством PHP", вполне реально, что ты не сможешь реализовать то, что даёт тебе ангуляр и себя, как программиста этого проекта.
"Если уже работает и уже готово - зачем там ангуляр?" - проет сейчас новый, большой, есть архитектура на ангуларе и в той же форме логина я собираюсь передавать данные через ангуларовский сервис запросами на бек, но мне предлагают использовать php, чтоб не делать запросы ajax
Хочу еще раз сделать акцент на том, что сказал Qvarck, PHP не на фронте, он используется как шаблонизатор на бэке.
И если взять тот пример, с блоком который недоступен для определенных пользователей, в случае скрытия его на стороне фронта, продвинутый пользователь через консоль сможет получить к нему доступ, при желании... а в случае с PHP, со стороны фронта это невозможно.
и зная функционал yii там довольно легко туже ajax-валидацию осуществить без front-end программиста.
Так что действительно, вы этой команде больше как верстальщик нужны.
А как же большие приложения где используются роли и прочие запросы доступа? Разве это не делает через фронтенд посредство REST? Зачем тогда JS security, и в целом всякие фреймворки, если они не канают для реализации данных потребностей?
DarthJS: знаете, то о чем вы спросили, довольно щепетильный вопрос, который может поднять холивар, но я постараюсь донести свою мысль...
Когда то читал интересную сатиру на тему frontend разработки, от хочу сказать, что сообщество frontend-да сильно поддается трендам, есть понятие не того, что эффективно, а что модно. Так вот, речь там шла о том, про молодой студент, пришел на форум, чтобы ему помогли сделать одностраничник, и вот он говорит, что ему нужно сделать такую-то форму, что бы при клике ее отправляло, на такой-то адрес. И первый совет, тебе нужно использовать React, за реактом будущее и т.д. Он - не, мне просто нужна форма, помогите ее сделать, тут другой чел - я тебе помогу, только ее нужно делать с Angular...он опять, подождите, мне просто нужна форма, помогите ее сделать...ну и т.д.
думаю суть ясна...
и вы частично сами ответили на свой вопрос, "посредство REST", сам по себе front-end этого не делает, он только отправляет, принимает и обрабатывает запросы, логика должна быть на сервере...
просто такие приложения часть полномочий перекладывают на front-end, но все равно не все.
Я сам по себе Full-stack разработчик, но больше Frontend'ом люблю заниматься... Начинал работать с AngularJS (набрался опыта с 1-й версией и после релиза второй версии - забил на AngularJS), сделал пару SPA проектов на AngularJS и скажу следующее, AngularJS - только для SPA приложений, а PHP только в качестве RESTful API сервиса (в мое случае, я использую Laravel/Lumen и считаю это идеальное решение!)
Если же хотите и дальше на этом проекте работать, возьмитесь за VueJS2 (лично мое имхо, он куда более приятнее чем AngularJS2, а у первой версии нет будущего и нет смысла новые проекты начинать делать на нем...). И он хорошо подходит для SSR приложений, т.е. не обязательно делать SPA. Я как раз сейчас и разрабатываю бизнес приложение на этом стэке (VueJS2 + Laravel).
Хотя... если я правильно понял и вы делаете игру в команде, то для игры в наше время SPA самый лучший выбор. Так что предложите в команде перейти на RESTful API сервис в качестве бэкэгда...
Спасибо, я смотрел на Vue. Я планировал на 2м Ангуларе начать, но немного не хватает времени для поднятия скилов, с 1м я отлично себя чувствую, просто не работал с PHP на бекенде, либо с бекендщиками, у которых, как по мне, немного странное видение картины в целом
Начнем с далека: PHP - PHP Hypertexp Processor.
То что вы называете "на фронте" называется рендеринг. Это можно сказать классическое использование пыхи. Фреймворки часто содержат функциональеость, которая не совсем ложится в парадигму SPA, как в вашем примере с формами.
Подобные нестыковки решаются исключительно за счет соглашений в конкретном проекте.
По рукам этим PHP-никам. Они просто одеяло на себя тянут. Если в проекте решили использовать Ангуляр, то это уже совсем другая архитектура и бэкендщикам надо перестраиваться - они уже должны писать чистые rest services и забыть про view, templates и прочую фигню которая превращается в html! ВООБЩЕ ПРО HTML пусть забудут. Если все же поступают задачи рендерить что-то на сервере - тогда нафиг не нужен ангуляр.
PHP легко заменяется на тот же TWIG. Но суть от этого не поменяется — это просто разметка логики.
Вы либо весь фронт переводите на JS и общаетесь по API, либо не парьтесь, потому что для бизнеса иногда нужно просто, чтобы работало, и чем быстрее/проще — тем лучше.