ngRoute è un modulo creato dal team Angular che fornisce funzionalità di routing lato client di base. Questo modulo fornisce una base abbastanza potente per il routing e può essere costruito abbastanza facilmente per fornire solide funzionalità di routing, come esemplificato in questo post sul blog (assicurati di leggere il commento tra Ward Bell e Ben Nadel, l'autore - sono un coppia di professionisti angolari)
ui-router sposta l'attenzione da percorsi url-centrici a "stati" dell'applicazione, che possono o meno essere riflessi nell'URL.
Le funzionalità principali aggiunte da ui-router sono stati nidificati e viste con nome.
Gli stati nidificati consentono di separare la logica del controller per le varie parti dell'applicazione. Un esempio molto semplice di questo sarebbe un'app con la navigazione principale in alto, un elenco di navigazione secondario a sinistra e il contenuto a destra. Senza stati nidificati, un singolo controller dovrebbe in genere gestire la logica di visualizzazione per la navigazione secondaria e il contenuto. Il routing nidificato consente di separare queste preoccupazioni.
Le viste con nome sono un'altra caratteristica aggiuntiva di ui-router. Con ngRoute, puoi avere una sola direttiva ngView su una pagina, mentre con le viste con nome in ui-router puoi specificare più direttive ui-view, e quindi ogni stato è in grado di influenzare il modello e il controller delle viste dei nomi. Un esempio semplicissimo di questo sarebbe avere il contenuto principale della tua app come vista principale e quindi avere anche una barra a piè di pagina che sarebbe una UI-view separata. In questo scenario, il controller del piè di pagina non deve più ascoltare i cambiamenti di stato / rotta.
Un buon confronto tra ngRoute e ui-router è disponibile su questo episodio di podcast .
Solo per rendere le cose più confuse, tieni d'occhio il nuovo modulo di routing "ufficiale" che il team di Angular si aspetta di rilasciare per le versioni 1.5 e 2.0 di Angular. Questo sostituirà il modulo ngRoute. Ecco la documentazione corrente per il nuovo modulo del router - è piuttosto scarsa al momento della pubblicazione poiché l'implementazione non è stata ancora finalizzata. Guarda qui per ulteriori notizie su quando questo modulo verrà effettivamente rilasciato.