Veuillez expliquer la différence entre $routeProvider
et $stateProvider
dans AngularJS.
Quelle est la meilleure pratique?
Les deux font le même travail car ils sont utilisés à des fins de routage dans SPA (Single Page Application).
URL vers les contrôleurs et les vues (HTML partiels). Il regarde $ location.url () et tente de mapper le chemin vers un itinéraire existant définition.
HTML
<div ng-view></div>
L'étiquette ci-dessus rendra le modèle à partir de la condition $routeProvider.when()
que vous aviez mentionnée dans .config
(phase de configuration) de angular
Limitations: -
ng-view
sur la page.$routeProvider
échoue. (pour y parvenir, nous devons utiliser des directives telles que ng-include
, ng-switch
, ng-if
, ng-show
, ce qui est mal à propos de les avoir dans SPA)AngularUI Router est un framework de routage pour AngularJS, qui autorise vous organisez les parties de votre interface dans une machine d'état . UI-Router est organisé autour d'états, qui peuvent éventuellement avoir itinéraires, ainsi que d'autres comportements, attachés.
Vues multiples et nommées
Une autre fonctionnalité intéressante est la possibilité d’avoir plusieurs vues ui dans un modèle.
Bien que plusieurs vues parallèles constituent une fonctionnalité puissante, vous serez souvent en mesure de gérer vos interfaces plus efficacement en imbriquant votre view
s et en associant ces vues à des états imbriqués.
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
La majorité du pouvoir de ui-router
est qu'il peut gérer les états et vues imbriqués.
Avantages
ui-view
sur une seule pageui-view="some"
de l'état simplement en utilisant le routage absolu en utilisant @
avec le nom de l'état.@
pour modifier ui-view="some"
. Cela remplacera le ui-view
plutôt que de vérifier s'il est imbriqué ou non.ui-sref
pour créer une URL href
de manière dynamique sur la base de URL
mentionnée dans un état. Vous pouvez également définir un paramètre d'état au format json
.Pour plus d'informations, angular ui-router
Pour une meilleure flexibilité avec différentes vues imbriquées avec des états, je préférerais que vous choisissiez ui-router
Le ng-Router d’Angular tient compte de URLs
lors du routage, UI-Router prend states
en plus des URL.
Les états sont liés à des vues nommées, imbriquées et parallèles, vous permettant de gérer de manière puissante l'interface de votre application.
Lorsque vous êtes dans ng-router, vous devez faire très attention aux URL lorsque vous fournissez des liens via la balise <a href="">
. Dans UI-Router, vous ne devez garder à l'esprit que state
. Vous fournissez des liens tels que <a ui-sref="">
. Notez que même si vous utilisez <a href="">
dans UI-Router, comme vous le feriez dans ng-router, cela fonctionnera toujours.
Ainsi, même si vous décidez de changer votre URL un jour ou l'autre, votre state
restera la même et vous devrez changer d'URL uniquement à .config
.
Alors que ngRouter peut être utilisé pour créer des applications simples, UI-Router facilite beaucoup le développement pour les applications complexes. Voici son wiki.
$ route: Ceci est utilisé pour les liens profonds vers les contrôleurs et les vues (partiels HTML) et surveille $ location.url () afin de mapper le chemin à partir d'une définition existante de route.
Lorsque nous utilisons ngRoute, la route est configurée avec $ routeProvider et lorsque nous utilisons ui-router, elle est configurée avec $ stateProvider et $ urlRouterProvider.
<div ng-view></div>
$routeProvider
.when('/contact/', {
templateUrl: 'app/views/core/contact/contact.html',
controller: 'ContactCtrl'
});
<div ui-view>
<div ui-view='abc'></div>
<div ui-view='abc'></div>
</div>
$stateProvider
.state("contact", {
url: "/contact/",
templateUrl: '/app/Aisel/Contact/views/contact.html',
controller: 'ContactCtrl'
});