Маршрутизация AngularJS против бэкэнд-маршрутизации
Я хотел бы использовать AngularJS в своем следующем проекте.
Приложение с бэкэндом Python и html5, Angular интерфейсом.
Я использую структуру MVC для бэкэнда, и я немного запутался.
Нужно ли использовать маршрутизацию на бэкэнд, а также на внешний интерфейс?
Поскольку я всегда использовал бэкэнд-маршрутизацию и маршрутизацию на интерфейсе, это действительно новая идея для меня.
Лучше ли маршрутизация на стороне клиента? И когда я предпочитаю использовать интерфейсную маршрутизацию, на бэкэнде не будет маршрутов? Весь запрос будет отправлен на один URL?
Ответы
Ответ 1
Вы можете использовать маршрутизацию на стороне клиента и позволить backend возвращать статические файлы и данные JSON.
Маршрутизация в Angular в основном сообщит вам, какой частичный шаблон вам нужно загрузить с сервера и какой контроллер обработает его.
Ваши конечные маршруты будут такими, как
'/partials/:name' -> return corresponding partial
'/api/*' -> handlers to return json data
'/*' -> return index.html
Ваш index.html будет содержать ссылку на другие представления
...
<div ng-view></div>
...
Теперь скажем, что вы перейдете на страницу yourapp.com/someview.html. Сервер возвращает
index.html, и поскольку url is/someview, Angular будет запрашивать "someview" частично с сервера и отображать страницу соответствующим образом.
Короче говоря, роль сервера заключается в возврате index.html, partials и обслуживании запроса REST API. Клиент всегда получает index.html и основывается на URL-адресе, запрашивает соответствующие партитуры и данные JSON.
Ответ 2
Вы можете выбрать либо маршрутизацию на стороне клиента, либо серверную маршрутизацию, либо комбинацию обоих...
В случае маршрутизации на стороне клиента у вас будет одна страница, обслуживаемая сервером. После этого маршрутизация будет выполняться клиентом. Если у вас есть приложение с большим количеством страниц, это может быть не оптимальное решение, и вы можете захотеть выполнить маршрутизацию на стороне сервера.
В случае серверной маршрутизации вы будете обслуживать страницу для каждого маршрута, определенного в серверном приложении. Каждый из них будет содержать мини-угловое приложение (кроме того, каждый из этих мини-SPA может выполнить дополнительную маршрутизацию, если это имеет смысл)
Вам решать, что лучше всего подходит для вашего дела.
Обновление:
Определенно проверьте UI-router в проекте AngularUI, если вы планируете выполнять маршрутизацию на стороне клиента. Это дает вам возможность создавать представления на основе состояний и некоторые другие вещи, которые не были возможны с помощью собственной маршрутизации Angular.