ngRoute ist ein vom Angular-Team entwickeltes Modul, das grundlegende clientseitige Routing-Funktionen bietet. Dieses Modul bietet eine ziemlich leistungsfähige Basis für das Routing und kann ziemlich einfach aufgebaut werden, um solide Routing-Funktionen bereitzustellen, wie in diesem Blog-Beitrag veranschaulicht (lesen Sie unbedingt den Kommentarpfad zwischen Ward Bell und Ben Nadel, dem Autor - sie sind a ein paar Angular-Profis)
Der UI-Router verschiebt den Fokus von URL-zentrierten Routen auf Anwendungszustände, die sich möglicherweise in der URL widerspiegeln oder nicht.
Die wichtigsten vom UI-Router hinzugefügten Funktionen sind verschachtelte Status und benannte Ansichten.
Mit verschachtelten Zuständen können Sie die Controller-Logik für die verschiedenen Teile der Anwendung trennen. Ein sehr einfaches Beispiel hierfür wäre eine App mit primärer Navigation oben, einer sekundären Navigationsliste links und Inhalten rechts. Ohne verschachtelte Zustände müsste ein einzelner Controller normalerweise die Anzeigelogik für die sekundäre Navigation sowie den Inhalt verarbeiten. Durch verschachteltes Routing können Sie diese Probleme trennen.
Benannte Ansichten sind eine weitere zusätzliche Funktion des UI-Routers. Mit ngRoute können Sie nur eine einzige ngView-Direktive auf einer Seite haben, während Sie mit benannten Ansichten in ui-router mehrere ui-view-Direktiven angeben können, und dann kann jeder Status die Vorlage und den Controller der Namensansichten beeinflussen. Ein super einfaches Beispiel hierfür wäre, dass der Hauptinhalt Ihrer App die primäre Ansicht ist und dann auch eine Fußzeilenleiste, die eine separate UI-Ansicht wäre. In diesem Szenario muss der Controller der Fußzeile nicht mehr auf Status- / Routenänderungen warten.
Einen guten Vergleich von ngRoute und UI-Router finden Sie in dieser Podcast- Episode.
Um die Sache noch verwirrender zu machen, sollten Sie das neue "offizielle" Routing-Modul im Auge behalten, das das Angular-Team voraussichtlich für die Versionen 1.5 und 2.0 von Angular veröffentlichen wird. Dadurch wird das ngRoute-Modul ersetzt. Hier ist die aktuelle Dokumentation für das neue Router-Modul - sie ist zum Zeitpunkt dieser Veröffentlichung recht spärlich, da die Implementierung noch nicht abgeschlossen ist. Sehen Sie hier, um weitere Neuigkeiten darüber zu erhalten, wann dieses Modul tatsächlich veröffentlicht wird.