Яка різниця між кутом-маршрутизатором і angular-ui-router?


1080

Я планую використовувати AngularJS у своїх великих програмах. Тому я зараз знаходжу правильні модулі для використання.

Яка різниця між модулями ngRoute (angular-route.js) та ui-router (angular-ui-router.js) ?

У багатьох статтях, коли використовується ngRoute , маршрут конфігурується за допомогою $ routeProvider . Однак, коли використовується з ui-роутером , маршрут налаштовується з $ stateProvider та $ urlRouterProvider .

Який модуль слід використовувати для кращої керованості та розширення?


Відповіді:


1112

ui-роутер є стороннім модулем і дуже потужний. Він підтримує все, що може зробити звичайний ngRoute, а також безліч додаткових функцій.

Ось декілька поширених причин, що для ngRoute обраний інтерфейс маршрутизатора:

  • ui-роутер дозволяє створювати вкладені подання та кілька іменованих представлень . Це дуже корисно для більшої програми, де у вас можуть бути сторінки, які успадковуються з інших розділів.

  • ui-роутер дозволяє вам зв’язувати сильний тип між станами на основі імен держав. Зміна URL-адреси в одному місці буде оновлювати кожне посилання на цей стан під час створення ваших посилань ui-sref. Дуже корисно для великих проектів, де URL-адреси можуть змінюватися.

  • Існує також концепція декоратора, за допомогою якої можна динамічно створювати ваші маршрути на основі URL-адреси, до якої намагаються отримати доступ. Це може означати, що вам не потрібно буде вказувати всі ваші маршрути заздалегідь.

  • штати дозволяють відображати та отримувати доступ до різної інформації про різні стани, і ви можете легко передавати інформацію між станами через $stateParams.

  • Ви можете легко визначити , якщо ви в змозі або батьку стану для настройки призначеного для користувача інтерфейсу елемента (підсвічування навігації поточного стану) в шаблонах з допомогою $stateзабезпечуються Ui-маршрутизатор , який можна виставити з допомогою установки його в $rootScopeна run.

По суті, ui-роутер - це ngRouter з більшою кількістю функцій, під листами він зовсім інший. Ці додаткові функції дуже корисні для великих програм.

Більше інформації:


134
Загалом, це найкраще пояснення, але для одного ключового моменту: "Загалом, ui-роутер - це ngRouter з більшою кількістю функцій". Це набагато більш фундаментально, ніж це: ngRouteпросто дозволяє призначити контролерам та шаблонам URL-маршрути, тоді як основна абстракція в ui.routerдержавах - це більш потужна концепція.
Нейт Абеле

23
Деяким може бути доречно вказати на різницю у розмірі файлів у цій відповіді. На даний момент ngRoute: 35,9 кБ / 4,4 кБ / 2,5 кБ та ui-router: 162,9 кБ / 30,4 кБ / 11,6 кБ (немініфікований / мінімізований / gzipped).
Алекс Росс

35
Ми серйозно турбуємось про 162 кб у 2015 році?
Сом

27
Чому б не @Catfish? У світі багато місць з поганими підключеннями до Інтернету, турбуватися про це дуже важливо!
Бруно Касалі

4
@tfrascaroli Я не погоджуюся - якщо користувач завантажує ваш додаток вперше, час завантаження сторінки сильно співвідноситься з показниками відмов . Я б обов'язково врахував вартість / вигоду, перш ніж додати ще 130 кБ на сторінку.
Ентоні Маннінг-Франклін

131

ngRoute - це модуль, розроблений командою AngularJS, який раніше був частиною ядра AngularJS.

ui-роутер - це рамка, створена поза проектом AngularJS для вдосконалення та розширення можливостей маршрутизації.

Через інтерфейсу маршрутизатора документації :

AngularUI Router - це схема маршрутизації для AngularJS, яка дозволяє організувати частини вашого інтерфейсу в стан машини. На відміну від послуги $ route у Angular core, яка організована навколо URL-маршрутів, UI-маршрутизатор організований навколо станів, до яких необов'язково можуть бути додані маршрути, а також інша поведінка.

Штати прив’язані до іменованих, вкладених та паралельних переглядів, що дозволяє вам ефективно керувати інтерфейсом програми.

Жоден з них не є кращим, вам доведеться вибрати найбільш відповідний для вашого проекту.

Однак якщо ви плануєте мати складні погляди у своїй заяві, і ви хочете мати справу з поняттям "$ state". Я рекомендую вам обрати ui-роутер.


1
FWIW Я просто витратив досить багато годин, стукаючи головою об ui-роутер для angularjs. Документація знаходиться в ДУЖЕ сумному стані справ, вона явно залишається покинутою вже роками. Пошкоджені посилання на важливі довідники, неправильно названі пакунки нугів у підручнику, ви його називаєте. Врешті-решт я здався після того, як не зміг з’ясувати це питання stackoverflow.com/questions/23585065/… (разом із, здавалося б, багатьма іншими людьми). Спробуйте ngRoute зараз ...
UnionP

71

ngRoute - це кутовий основний модуль, який підходить для базових сценаріїв. Я вірю, що вони додадуть більш потужні функції у майбутніх випусках.

URL: https://docs.angularjs.org/api/ngRoute

Ui-роутер - це внесений модуль, який долає проблеми ngRoute. В основному вкладені / складні подання.

URL: https://github.com/angular-ui/ui-router

Деякі відмінності між ui-роутером та ngRoute

http://www.amasik.com/angularjs-ngroute-vs-ui-router/

введіть тут опис зображення


52

ngRoute є частиною основної структури AngularJS.

ui-роутер - це бібліотека спільноти, створена для спроби вдосконалити можливості маршрутизації за замовчуванням.

Ось хороша стаття про налаштування / налаштування ui-роутера:

http://www.ng-newsletter.com/posts/angular-ui-router.html


35

Якщо ви хочете використовувати функцію вкладених представлень, реалізовану в парадигмі ngRoute, спробуйте кутовий-маршрут-сегмент - він має на меті розширити ngRoute, а не замінити його.


16
Я не бачу суттєвості вашої відповіді. Автор запитав конкретно про відмінності між кутом маршрутизатора та angular-ui-router. Також відмова від того, що ви творець, буде корисна при просуванні власних бібліотек.
віалі

23
Релевантність проста: angular-route + angular-route-segment = angular-ui-router. Отже, різниця полягає у: angular-ui-router
angular

1
Я думаю, що його відповідь справедлива. angular-route-segment.com , безумовно, є хорошим вибором для тих, хто не хоче накладних витрат на використання ui-роутера. Також @vially, люди наполегливо працюють над тим, щоб створити ці бібліотеки, це не погано, щоб просувати їх
phil

19

Загалом, ui-роутер працює над механізмом стану ... Це можна зрозуміти на простому прикладі:

Скажімо, у нас є велике застосування музичної бібліотеки (наприклад, .. гаана, сааван чи будь-яка інша). А внизу сторінки у вас є музичний плеєр, який поділяється в усьому стані сторінки.

Тепер скажімо, що ви просто натисніть на деякі пісні, щоб відтворити. У цьому випадку змінити лише стан музичного плеєра, а не перезавантажувати повну сторінку. З цим можна легко впоратися за допомогою ui-роутера.

Перебуваючи в ngRoute, ми просто прикріплюємо подання та контролер.


2
це можна зробити і зробити це за допомогою служб та заводів. Використання цього пакету - це нерозуміння кутових маршрутів, станів та закономірностей. Штати обробляються URL-адресою, що є правильним, якщо ви хочете поділитися додатком у специфічному стані. Більше того, у вас може бути кілька контролерів, що реагують на оновлення службових даних або параметр URL-адреси. інтерфейс маршрутизатора зіпсувати речі і повністю знищити кутовий візерунок.
Пабло Езекіїль Леоне

Я повністю згоден. Досі не можу знайти пояснення, де потрібно використовувати цю державну машину
kushalvm

18

Кутовий 1.x

ng-route :

ng-route розроблений командою angularJS для маршрутизації.

ng-route: маршрутизація на основі url (Location).

Наприклад:

$routeProvider
    .when("/home", {
        templateUrl : "home.html"
    })

ui-маршрут :

ui-роутер розробляється стороннім модулем.

ui-роутер: маршрутизація на основі стану

Наприклад:

 $stateProvider
        .state('home', {
            url: '/home',
            templateUrl: 'home.html'
        })

-> ui-роутер дозволяє вкладати перегляди

-> ui-роутер більш потужний, ніж ng-route

ng-router , ui-router


13

ngRoute - це модуль, побудований командою Angular, що забезпечує основну функціональність маршрутизації на стороні клієнта. Цей модуль забезпечує досить потужну базу для маршрутизації, і його можна побудувати досить легко, щоб надати надійну функціональність маршрутизації, як це пояснено в цій публікації блогу (обов'язково читайте коментарний шлях між Уордом Беллом та Бен Наделом, автором - вони є пара кутових плюсів)

ui-роутер зміщує фокус із маршрутів, орієнтованих на URL, на додатки "стани", які можуть бути або не відображатись у URL-адресі.

Основні функції, додані ui-роутером, - це вкладені стани та названі представлення.

Вкладені стани дозволяють розділяти логіку контролера для різних фрагментів програми. Дуже простим прикладом цього може бути додаток з первинною навігацією вгорі, вторинним навігаційним списком ліворуч та вмістом праворуч. Без вкладених станів одному контролеру, як правило, доведеться обробляти логіку відображення для вторинної навігації, а також вмісту. Вкладені маршрутизації дозволяють розділити ці проблеми.

Іменовані види - ще одна додаткова функція ui-роутера. За допомогою ngRoute ви можете мати лише одну директиву ngView на сторінці, тоді як з іменованими представленнями в ui-маршрутизаторі ви можете вказати кілька директив перегляду ui-перегляду, і тоді кожен стан може впливати на шаблон і контролер представлень імен. Надзвичайно простим прикладом цього є те, щоб основний вміст вашої програми був основним видом, а потім також була смуга нижнього колонтитула, яка була б окремим переглядом інтерфейсу. У цьому випадку контролеру колонтитула більше не потрібно слухати зміни стану / маршруту.

Гарне порівняння ngRoute та ui-роутера можна знайти в цьому епізоді подкастів .

Щоб зробити речі більш заплутаними, слідкуйте за новим "офіційним" модулем маршрутизації, який очікує випуск команди Angular для версій 1.5 та 2.0 Angular. Це буде заміною модуля ngRoute. Ось поточна документація для нового модуля маршрутизатора - вона є досить рідкою, ніж ця публікація, оскільки реалізація ще не завершена. Подивіться тут, щоб дізнатися більше про те, коли цей модуль буде фактично випущений.


11

ngRoute - це основна бібліотека маршрутизації, де ви можете вказати лише один вид і контролер для будь-якого маршруту.

За допомогою ui-роутера ви можете вказати кілька переглядів, як паралельних, так і вкладених. Отже, якщо вашій програмі потрібен (або може знадобитися в майбутньому) будь-який складний спосіб маршрутизації / перегляду, тоді продовжуйте користуватися ui-роутером.

Це найкраще керівництво для початку маршрутизатора AngularUI.


10

Основне, що ви повинні знати: ng-роутер $location.path()і ui-маршрутизатор$state.go

Відпочиньте нам усі функції.


8

інтерфейс маршрутизатора полегшує ваше життя! Ви можете додати його до програми AngularJS, ввівши його у свої програми ...

ng-route поставляється як частина основного AngularJS, тому він простіший і надає менше можливостей ...

Подивіться тут, щоб краще зрозуміти ng-route: https://docs.angularjs.org/api/ngRoute

Також при його використанні не забудьте використовувати: ngView ..

ng-ui-роутер відрізняється, але:

https://github.com/angular-ui/ui-router, але дає більше можливостей….


6

AngularUI Router - це схема маршрутизації для AngularJS, яка дозволяє організувати частини вашого інтерфейсу в стан машини. На відміну від послуги маршруту $ в модулі Angular ngRoute, який організований навколо URL-маршрутів, UI-маршрутизатор організований навколо станів, до яких необов'язково можуть бути додані маршрути, а також інша поведінка.

https://github.com/angular-ui/ui-router


4

ngRoute - це модуль, розроблений командою Angular.js, який раніше був частиною ядра Angular.

ui-router - це рамка, створена за межами проекту Angular.js для вдосконалення та розширення можливостей маршрутизації.


3

1- ngRoute розробляється кутовою командою, тоді як ui-роутер - це третій модуль. 2- ngRoute реалізує маршрутизацію на основі URL-адреси маршруту, тоді як ui-маршрутизатор реалізує маршрутизацію залежно від стану програми. 3- ui-роутер забезпечує все, що надає ng-маршрут, а також додаткові функції, такі як вкладені стани та кілька іменованих представлень.


0

ng-View(розроблений командою AngularJS) можна використовувати лише один раз на сторінці, тоді як ui-View(сторонній модуль) можна використовувати кілька разів на сторінку.

ui-View тому найкращий варіант.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.