Пожалуйста, объясните разницу между $routeProvider
и $stateProvider
в AngularJS.
Что является лучшей практикой?
Пожалуйста, объясните разницу между $routeProvider
и $stateProvider
в AngularJS.
Что является лучшей практикой?
Оба выполняют ту же самую работу, поскольку они используются для целей маршрутизации в SPA (одностраничное приложение).
URL-адреса контроллеров и представлений (HTML-партиалы). Он отслеживает $ location.url () и пытается сопоставить путь с существующим определением маршрута.
HTML
<div ng-view></div>
Над тегом будет отображаться шаблон из $routeProvider.when()
условия, которое вы упомянули в .config
(фаза конфигурации) углового
Ограничения:-
ng-view
на странице$routeProvider
произойдет сбой. (для достижения этой цели, мы должны использовать директивы , как ng-include
, ng-switch
, ng-if
, ng-show
, который выглядит плохо , чтобы иметь их в SPA)AngularUI Router - это инфраструктура маршрутизации для AngularJS, которая позволяет вам организовать части вашего интерфейса в конечный автомат. UI-Router организован вокруг состояний, к которым при желании могут быть привязаны маршруты, а также другое поведение.
Множественные и Именованные Представления
Еще одна отличная особенность - возможность иметь несколько пользовательских интерфейсов в шаблоне.
Несмотря на то, что несколько параллельных представлений являются мощной функцией, вы часто сможете более эффективно управлять своими интерфейсами, view
вкладывая свои и объединяя эти представления с вложенными состояниями.
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
Большая часть ui-router
силы России заключается в том, что он может управлять вложенными состояниями и представлениями.
Pros
ui-view
на одной страницеui-view="some"
состояние, просто используя абсолютную маршрутизацию @
с именем состояния.@
изменения ui-view="some"
. Это заменит ui-view
вместо того, чтобы проверять, является ли он вложенным или нет.ui-sref
для href
динамического создания URL-адреса на основе URL
упомянутых в состоянии, а также вы можете указать параметры состояния в json
формате.Для получения дополнительной информации Угловой UI-маршрутизатор
Для большей гибкости с различными вложенными представлениями с состояниями, я бы предпочел, чтобы вы пошли на ui-router
$stateProvider
&$routeProvider
Собственный ng-Router от Angular
URLs
учитывает при маршрутизации UI-Routerstates
в дополнение к URL-адресам.Находясь в ng-router, вы должны быть очень осторожны с URL при предоставлении ссылок через
<a href="">
тег, в UI-Router вы должны толькоstate
помнить. Вы предоставляете ссылки, как<a ui-sref="">
. Обратите внимание, что даже если вы используете<a href="">
в UI-Router, как и в ng-router, он все равно будет работать.Таким образом, даже если вы когда-нибудь решите изменить свой URL-адрес,
state
он останется прежним, и вам нужно будет изменить URL только на.config
.В то время как ngRouter может использоваться для создания простых приложений, UI-Router значительно упрощает разработку сложных приложений. Вот его вики.
источник
$ route: используется для глубоких ссылок URL-адресов на контроллеры и представления (HTML-компоненты) и отслеживает $ location.url () для сопоставления пути с существующим определением маршрута.
Когда мы используем ngRoute, маршрут настраивается с помощью $ routeProvider, а когда мы используем ui-router, маршрут настраивается с помощью $ stateProvider и $ urlRouterProvider.
источник