Пожалуйста, объясните разницу между $routeProvider
и $stateProvider
в AngularJs.
Это наилучшая практика.
Пожалуйста, объясните разницу между $routeProvider
и $stateProvider
в AngularJs.
Это наилучшая практика.
Оба выполняют ту же работу, что и для целей маршрутизации в SPA.
URL-адреса контроллеров и представлений (частичные части HTML). Он смотрит $location.url() и пытается сопоставить путь к существующему маршруту определение.
HTML
<div ng-view></div>
Вышеуказанный тег будет отображать шаблон из условия $routeProvider.when()
, которое вы упомянули в .config
(фаза конфигурации) angular
Ограничения: -
ng-view
на странице$routeProvider
терпит неудачу. (для этого нам нужно использовать такие директивы, как ng-include
, ng-switch
, ng-if
, ng-show
, которые выглядят плохо, чтобы иметь их в SPA)AngularUI Router - это схема маршрутизации для AngularJS, которая позволяет вы можете организовать части вашего интерфейса в конечный автомат. UI-Router организован вокруг состояний, которые могут необязательно иметь маршруты, а также другое поведение.
Несколько и именованные виды
Еще одна замечательная функция - возможность иметь несколько шаблонов ui в шаблоне.
В то время как несколько параллельных представлений являются мощной функцией, вы часто сможете более эффективно управлять своими интерфейсами, вложив свои view
s и соединяя эти представления с вложенными состояниями.
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.Дополнительная информация Angular ui-router
Для большей гибкости с различными вложенными представлениями с состояниями, я бы предпочел, чтобы вы пошли за ui-router
Angular собственный ng-маршрутизатор учитывает URLs
во время маршрутизации, UI-Router принимает states
в дополнение к URL-адресам.
Государства привязаны к именам, вложенным и параллельным представлениям, что позволяет вам эффективно управлять вашим интерфейсом приложений.
В то время как в ng-маршрутизаторе вы должны быть очень осторожны в отношении URL-адресов при предоставлении ссылок через тег <a href="">
, в UI-Router вы должны учитывать только state
. Вы предоставляете такие ссылки, как <a ui-sref="">
. Обратите внимание, что даже если вы используете <a href="">
в UI-Router, как и в ng-router, он все равно будет работать.
Итак, даже если вы решили изменить свой URL-адрес, ваш state
останется таким же, и вам нужно будет изменить URL-адрес только на .config
.
В то время как ngRouter можно использовать для создания простых приложений, UI-Router упрощает разработку приложений для сложных приложений. Вот его wiki.