Маршрутизация 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.