Мне бы хотелось, чтобы ваше мнение о веб-архитектуре было средней сложности.
контекстМне нужно создать собственную веб-платформу CRM (Управление взаимоотношениями с клиентами) для моей компании, которая будет в значительной степени выполнять только операции CRUD с такими объектами, как клиенты, контракты, счета и т. Д. Кроме того, она должна обрабатывать управление пользователями, например, регистрацию, аутентификация и авторизация (роли для пользователей, чтобы определить, какой тип действий им разрешено выполнять). Вот модель данных если вы хотите более подробную идею.
ОграниченияЯ обязан на стороне сервера использовать:
Для клиентской части я могу свободно использовать любые интерфейсные веб-фреймворки и библиотечные компоненты в HTML, CSS и Javascript без каких-либо ограничений браузера.
БеспокойствоМое основное внимание уделяется разделению интересов между клиентом и клиентом, поэтому я полагаюсь на использование подхода SPA. Я хотел бы избежать максимально возможного рендеринга представлений на сервере с помощью файлов шаблонов CakePHP (.Ctp) . Если это возможно, я бы даже хотел сделать почти полностью независимым от клиента.
За исключением обслуживания начальных файлов приложений html, css и js, я хотел бы использовать свой бэкэнд для использования в качестве полного JSON REST API для КАЖДЫЙ Операция CRUD, которую клиент будет использовать через вызовы Ajax. Я рассматриваю возможность использования AngularJS для обработки всей клиентской части MVVM.
Вопрос: Подходит ли одностраничная аппликация для этого подхода? Чтобы ты делал? Любая ссылка или документация будет высоко ценится.
Спасибо за ваше понимание по этому вопросу!
Хорошего дня.
Я, конечно, предвзято отношусь к своему ответу, но пока немного работал с угловатый на переднем конце и узел на заднем конце. Если вы собираетесь предоставлять JSON API REST, он должен работать одинаково, независимо от того, что вы выберете для внешнего интерфейса.
Angular позволяет действительно просто применять шаблон MVC. Таким образом, очень легко использовать любую логику, связанную с интерфейсом. Есть много учебников и примеров там для& хотя я использовал и рекомендую JWT для этого, так как ваш API будет обслуживать JSON (почти) во всем, и его действительно легко присоединить к заголовку Auth при каждом запросе (со службами).
Angular имеет методы $ http, которые позволяют легко использовать POST и GET для любого URL, который вы предоставляете, а также легко обрабатывать ошибки и успехи.
Помимо взаимодействия с сервером, у него есть несколько полезных и удобных способов отображения информации в вашем браузере, например, информация о пользователе, роли и т. Д. С использованием двойных фигурных скобок {{user.name}}, например.
Любые вопросы, не стесняйтесь спрашивать!
Если вы можете сделать Api Rest с cakePhp, angular — это хороший вариант для работы с внешним интерфейсом.
Я советую вам использовать $ ресурс с вашим отдыхом API. Это более эффективно, чем $ http.
Работая в крупной уважаемой компании, мы должны были сделать то же самое. Мы создали большой SPA, используя ui.router для управления маршрутизацией. ui.router претендует на то, чтобы быть де-факто решением для угловой маршрутизации, и действительно, это хорошее и наиболее зрелое решение.
У нас есть Angular передняя часть и Node backend, но передняя часть и задняя часть, как вы говорите, полностью независимы.
Для дальнейшего разделения проблем вы должны рассмотреть возможность Dockerising вашего решения, веб-файлов и веб-сервера в одном контейнере, общение с бэкэндом в другом контейнере.
PS Если вы не знакомы с докером и хотите получить краткий обзор, смотрите:
Изменяются ли изменения в образах Docker автоматически в развернутые контейнеры?
Я ценю, что вам может быть запрещено использовать Docker, но если нет, это удивительно!