Есть ли смысл делать SPA?

Лирическое отступление
Около месяца пилю интерактивную и динамическую форму на конструкторе подписных страниц с jQuery и обращением к PHP-скрипту на внешнем хосте. Сейчас список хотелок и бизнес-задач разрастается, я начинаю путаться в своём коде и иногда не имею понятия, как всё связать до кучи. Задумался о том, чтобы превратить изначально простую форму заказа на конструкторе в мини-SPA для обработки бизнес-логики.


Какие вводные:
- сервис, на котором ведётся расписание сотрудников и хранится история сеансов
- СРМ, которая принимает заявки, платежи и умеет отправлять get и post запросы по заданному url

Что мне нужно:
1. сделать страницу заказа, на которой поле почты пользователя, выбор сотрудника из списка, выбор даты и времени сеанса

2. после ввода почты я отправляю запрос по API в сервис, где хранится история сеансов и получаю ответ с инфой по данной почте (сколько сеансов, с кем работал пользователь, были ли сеансы в последние 3 месяца)

2.1. на основании ответа я делаю автоматические действия на странице (выбираю тип услуги (1 из 2), выбираю сотрудника)

3. кликая на блок с выбором сотрудников, я подгружаю список актуальных сотрудников из сервиса по АПИ (возвращается json-массив с ФИО, ссылкой на фото, специализацией, текстом-описанием) и вывожу эти данные в карточках. В каждой карточке есть кнопка-инфо, которая показывает расширенный текст-описание сотрудника.

4. кликая на блок с выбором даты, я подгружаю список доступных дат и промежутков времени, доступных для записи (например, 16 февраля сотрудник №1 может принять человека в 10:00 и 13:00, длительность сеанса 60 минут) и вывести кнопки, в которых будет написано 10:00 и 13:00.

Если свободных сеансов нет, вывести текст с информацией. По клику на кнопку со временем это время "запоминается" и после отправки формы по АПИ создаётся сеанс в сервисе с расписанием.

5. зная вернувшийся ответ от сервиса после ввода почты, проверять действия пользователя на странице и выводить предупреждения (например, если за последние 3 месяца не было сеансов (вернулось false), то при попытке выбрать услугу №2 вывести предупреждение).

Для обработки этих действий уже лучше писать SPA или я просто хочу накидать себе дополнительных задач, а всё решается одним js-скриптом?

6. (доп. вопрос). моя СРМ умеет отправлять post и get запросы по указанному url. Но чтобы обратиться к АПИ сервиса, нужно указывать токены в header. Управлять header в СРМ я не могу.

Стоит ли (и можно ли технически) хранить логику запросов к АПИ внутри SPA и обращаться к SPA из СРМ, чтобы сделать какие-то действия?
  • Вопрос задан
  • 1093 просмотра
Пригласить эксперта
Ответы на вопрос 6
Kozack
@Kozack
Thinking about a11y
Быстрой пройдясь по тексту, похоже, что вам нужен сложный интерактивный интерфейс. В таком случае — да, фреймворк по типу Vue вам отлично подойдёт для этой задачи.
Если нужно чуть больше функций — изучите возможности и примеры тут — https://nuxtjs.org/
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
простыню всю не читал, но исходя из
Сейчас список хотелок и бизнес-задач разрастается, я начинаю путаться в своём коде и иногда не имею понятия, как всё связать до кучи.


Ответ да - пришел момент сделать это нормальным приложением.
Ответ написан
Комментировать
@Graff1406
Вам не нужно данные из api индексировать в пойсковиках, поэтому SPA как раз и подходит для данной задачи и свободно можно обойтись без SSR. Задачу вы сами хотите реализовать или желаете нанять ?
Ответ написан
Комментировать
@Kostik_1993
Web Developer
Ответов много, но все немного мимо. Ваш вопрос никак не связан с SSR или SPA. Ваш вопрос касается поддержки и развития проекта. В данном случае у вас возникает потребность в РЕАКТИВНОСТИ (да да, не SPA вам нужно как таковое, а реактивность) и управление состоянием ваших форм.
С Vue/React такое конечно гораздо удобнее писать, но не обязательно сразу делать SPA приложение.
Начните постепенно внедрять новые компоненты и переписывать старый код на компоненты Vue, а на чем будет генерироваться Layout и где будет происходить маршрутизация не играет большой роли. В дальнейшем конечно SPA будет перспективнее и быстрее (при грамотном написании)
Ответ написан
Комментировать
nikolaokonesh
@nikolaokonesh
Не курю не пью
Для предварительной быстрой разработки: Ruby on Rails + Stimulusjs + Acton Cable
Дальнейшая поддержка: Ruby on Rails Api + Svelte или vue.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Для этого лучше и проще подойдёт includeHTML.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы