ngRoute est un module construit par l'équipe Angular qui fournit une fonctionnalité de routage côté client de base. Ce module fournit une base assez puissante pour le routage, et peut être construit assez facilement pour donner une fonctionnalité de routage solide, comme illustré dans cet article de blog (assurez-vous de lire la piste de commentaires entre Ward Bell et Ben Nadel, l'auteur - ils sont un couple de pros angulaires)
ui-router déplace le focus des routes centrées sur l'URL vers les "états" d'application, qui peuvent ou non être reflétés dans l'URL.
Les principales fonctionnalités ajoutées par ui-router sont les états imbriqués et les vues nommées.
Les états imbriqués vous permettent de séparer la logique du contrôleur pour les différentes parties de l'application. Un exemple très simple serait une application avec une navigation principale en haut, une liste de navigation secondaire à gauche et un contenu à droite. Sans états imbriqués, un seul contrôleur devrait généralement gérer la logique d'affichage de la navigation secondaire ainsi que le contenu. Le routage imbriqué vous permet de séparer ces problèmes.
Les vues nommées sont une autre fonctionnalité supplémentaire de ui-router. Avec ngRoute, vous ne pouvez avoir qu'une seule directive ngView sur une page, tandis qu'avec les vues nommées dans ui-router, vous pouvez spécifier plusieurs directives ui-view, puis chaque état peut affecter le modèle et le contrôleur des vues de noms. Un exemple très simple de cela serait d'avoir le contenu principal de votre application comme vue principale, puis d'avoir également une barre de pied de page qui serait une vue d'interface utilisateur distincte. Dans ce scénario, le contrôleur du pied de page n'a plus à écouter les changements d'état / de route.
Une bonne comparaison de ngRoute et ui-router peut être trouvée sur cet épisode de podcast .
Juste pour rendre les choses plus confuses, gardez un œil sur le nouveau module de routage "officiel" que l'équipe Angular prévoit de publier pour les versions 1.5 et 2.0 d'Angular. Cela remplacera le module ngRoute. Voici la documentation actuelle du nouveau module Router - elle est assez rare à partir de cette publication car l'implémentation n'a pas encore été finalisée. Regardez ici pour plus d'informations sur la date de sortie de ce module.