ngRoute - це модуль, побудований командою Angular, що забезпечує основну функціональність маршрутизації на стороні клієнта. Цей модуль забезпечує досить потужну базу для маршрутизації, і його можна побудувати досить легко, щоб надати надійну функціональність маршрутизації, як це пояснено в цій публікації блогу (обов'язково читайте коментарний шлях між Уордом Беллом та Бен Наделом, автором - вони є пара кутових плюсів)
ui-роутер зміщує фокус із маршрутів, орієнтованих на URL, на додатки "стани", які можуть бути або не відображатись у URL-адресі.
Основні функції, додані ui-роутером, - це вкладені стани та названі представлення.
Вкладені стани дозволяють розділяти логіку контролера для різних фрагментів програми. Дуже простим прикладом цього може бути додаток з первинною навігацією вгорі, вторинним навігаційним списком ліворуч та вмістом праворуч. Без вкладених станів одному контролеру, як правило, доведеться обробляти логіку відображення для вторинної навігації, а також вмісту. Вкладені маршрутизації дозволяють розділити ці проблеми.
Іменовані види - ще одна додаткова функція ui-роутера. За допомогою ngRoute ви можете мати лише одну директиву ngView на сторінці, тоді як з іменованими представленнями в ui-маршрутизаторі ви можете вказати кілька директив перегляду ui-перегляду, і тоді кожен стан може впливати на шаблон і контролер представлень імен. Надзвичайно простим прикладом цього є те, щоб основний вміст вашої програми був основним видом, а потім також була смуга нижнього колонтитула, яка була б окремим переглядом інтерфейсу. У цьому випадку контролеру колонтитула більше не потрібно слухати зміни стану / маршруту.
Гарне порівняння ngRoute та ui-роутера можна знайти в цьому епізоді подкастів .
Щоб зробити речі більш заплутаними, слідкуйте за новим "офіційним" модулем маршрутизації, який очікує випуск команди Angular для версій 1.5 та 2.0 Angular. Це буде заміною модуля ngRoute. Ось поточна документація для нового модуля маршрутизатора - вона є досить рідкою, ніж ця публікація, оскільки реалізація ще не завершена. Подивіться тут, щоб дізнатися більше про те, коли цей модуль буде фактично випущений.