ngRoute to moduł zbudowany przez zespół Angular, który zapewnia podstawowe funkcje routingu po stronie klienta. Ten moduł stanowi dość potężną bazę do routingu i można go dość łatwo zbudować, aby zapewnić solidną funkcjonalność routingu, jak pokazano w tym poście na blogu (koniecznie przeczytaj ślad komentarza między Wardem Bellem a Benem Nadelem, autorem - są para profesjonalistów Angular)
ui-router przenosi fokus z tras zorientowanych na adres URL na „stany” aplikacji, które mogą, ale nie muszą, znajdować się w adresie URL.
Podstawowe funkcje dodane przez interfejs użytkownika to stany zagnieżdżone i nazwane widoki.
Stany zagnieżdżone pozwalają oddzielić logikę kontrolera dla różnych elementów aplikacji. Bardzo prostym przykładem może być aplikacja z podstawową nawigacją u góry, dodatkową listą nawigacyjną po lewej i treścią po prawej. Bez stanów zagnieżdżonych pojedynczy kontroler zazwyczaj musiałby obsługiwać logikę wyświetlania dla nawigacji dodatkowej, a także dla zawartości. Zagnieżdżone routing pozwala oddzielić te obawy.
Nazwane widoki to kolejna dodatkowa funkcja interfejsu użytkownika routera. Dzięki ngRoute możesz mieć tylko jedną dyrektywę ngView na stronie, podczas gdy z nazwanymi widokami w interfejsie routera możesz określić wiele dyrektyw widoku interfejsu użytkownika, a następnie każdy stan może wpływać na szablon i kontroler widoków nazw. Bardzo prostym przykładem tego byłoby posiadanie głównej zawartości aplikacji jako widoku głównego, a następnie posiadanie paska stopki, który byłby oddzielnym widokiem interfejsu użytkownika. W tym scenariuszu sterownik stopki nie musi już nasłuchiwać zmian stanu / trasy.
Dobre porównanie ngRoute i routera interfejsu użytkownika można znaleźć w tym odcinku podcastu .
Aby wszystko było bardziej mylące, miej oko na nowy „oficjalny” moduł routingu, który zespół Angular spodziewa się wydać dla wersji 1.5 i 2.0 Angular. To zastąpi moduł ngRoute. Oto aktualna dokumentacja nowego modułu routera - jest dość rzadka na ten post, ponieważ wdrożenie nie zostało jeszcze sfinalizowane. Obejrzyj tutaj, aby uzyskać więcej informacji o tym, kiedy ten moduł zostanie faktycznie wydany.