Angular-route ve angular-ui-router arasındaki fark nedir?


1080

Büyük uygulamalarımda AngularJS kullanmayı planlıyorum . Bu yüzden kullanılacak doğru modülleri bulma sürecindeyim.

Arasındaki fark nedir ngRoute (açısal-route.js) ve ui-yönlendirici (açısal-ui-router.js) modülleri?

NgRoute kullanıldığında birçok makalede , yol $ routeProvider ile yapılandırılır . Ancak, ui-router ile kullanıldığında , rota $ stateProvider ve $ urlRouterProvider ile yapılandırılır .

Daha iyi yönetilebilirlik ve genişletilebilirlik için hangi modülü kullanmalıyım?


11
değil söz etmek açısal en yeni yönlendirici 1.4+ ve 2.0
Zach Lysobey

Yanıtlar:


1112

ui-router 3. taraf bir modüldür ve çok güçlüdür. Normal ngRoute'un yapabileceği her şeyi ve birçok ekstra işlevi destekler.

Ui-router'ın ngRoute üzerinden seçilmesinin bazı yaygın nedenleri şunlardır:

  • ui-yönlendirici iç içe görünümlere ve birden çok adlandırılmış görünümlere izin verir . Bu, diğer bölümlerden devralınan sayfalara sahip olabileceğiniz büyük uygulamalarda çok kullanışlıdır.

  • ui-yönlendirici, eyalet adlarını temel alan durumlar arasında güçlü tipte bağlantı kurmanıza olanak tanır. URL'leri tek bir yerde değiştirmek, bağlantılarınızı oluştururken her bağlantıyı bu duruma güncelleyecektir ui-sref. URL'lerin değişebileceği daha büyük projeler için çok kullanışlıdır.

  • Ayrıca, erişmeye çalışan URL'ye göre rotalarınızın dinamik olarak oluşturulmasına izin vermek için kullanılabilecek dekoratör kavramı da vardır . Bu, tüm rotalarınızı önceden belirtmeniz gerekmeyeceği anlamına gelebilir.

  • durumlar , farklı durumlar hakkında farklı bilgileri haritalamanıza ve bunlara erişmenize olanak tanır ve eyaletler arasında bilgileri kolayca iletebilirsiniz $stateParams.

  • Aracılığıyla size şablonlarda UI öğesi (şimdiki durumunun navigasyon vurgulayarak) ayarlamak için bir devletin devlet veya ebeveyn olup olmadığını kolaylıkla belirleyebilir $stateiçeri ayarlama yoluyla açığa çıkarabilir ui-yönlendirici tarafından sağlanan $rootScopeüzerinde run.

Aslında, ui-router daha fazla özelliklere sahip ngRouter'dır, sayfaların altında oldukça farklıdır. Bu ek özellikler daha büyük uygulamalar için çok kullanışlıdır.

Daha fazla bilgi:


134
Genel olarak bu en iyi açıklamadır, ancak bir anahtar nokta için: "Genel olarak, ui-router daha fazla özelliklere sahip ngRouter'dır". Bundan çok daha temel: ngRoutesadece URL yollarına denetleyiciler ve şablonlar atamanıza izin verirken, temel soyutlama ui.routerdaha güçlü bir kavram olan durumlardır.
Nate Abele

23
Bu yanıtta dosya boyutundaki farklılığa dikkat çekmek bazılarıyla ilgili olabilir. Şu an itibariyle ngRoute: 35.9kB / 4.4kB / 2.5kB ve ui-router: 162.9kB / 30.4kB / 11.6kB (küçültülmüş / küçültülmüş / sıkıştırılmış).
Alex Ross

35
2015 yılında 162 kb'den ciddi bir şekilde endişe duyuyor muyuz?
Yayın

27
Neden @ Balık değil? Dünyada kötü internet bağlantılarına sahip birçok yer var, endişelenmek çok önemli!
Bruno Casali

4
@tfrascaroli Kabul etmiyorum - bir kullanıcı uygulamanızı ilk kez yüklüyorsa, sayfa yükleme süreleri hemen çıkma oranlarıyla güçlü bir korelasyon gösterir . Kesinlikle sayfaya başka bir 130kB eklemeden önce maliyet / fayda düşünün.
Anthony Manning-Franklin

131

ngRoute , AngularJS çekirdeğinin önceki bir parçası olan AngularJS ekibi tarafından geliştirilen bir modüldür.

ui-router , yönlendirme yeteneklerini geliştirmek ve geliştirmek için AngularJS projesi dışında yapılan bir çerçevedir.

Ui-yönlendirici belgelerinden :

AngularUI Router, arayüzünüzün parçalarını bir durum makinesinde düzenlemenizi sağlayan AngularJS için bir yönlendirme çerçevesidir. URL yolları etrafında düzenlenmiş Açısal çekirdekteki $ route hizmetinin aksine, UI-Router isteğe bağlı olarak yolları ve diğer davranışları ekleyebilecek eyaletler etrafında düzenlenir.

Durumlar, uygulamanızın arayüzünü güçlü bir şekilde yönetmenizi sağlayan adlandırılmış, iç içe ve paralel görünümlere bağlıdır.

Her ikisi de daha iyi değil, projeniz için en uygun olanı seçmeniz gerekecek.

Ancak, uygulamanızda karmaşık görünümlere sahip olmayı planlıyorsanız ve "$ state" kavramıyla ilgilenmek istiyorsanız. Ui-router'ı seçmenizi tavsiye ederim.


1
FWIW Angularjs için ui-router'a karşı başımı vurarak birkaç saat geçirdim. Dokümantasyon ÇOK özür dilerim, açıkça yıllarca terkedilmiş durumda. Önemli kılavuzlara kırık linkler, eğitimde isimsiz nuget paketleri, adını siz koyun. Sonunda bu sorunu anlayamadıktan sonra vazgeçtim stackoverflow.com/questions/23585065/… (görünüşte birçok insanla birlikte). NGRoute şimdi deneniyor ...
UnionP



35

NgRoute paradigması içinde uygulanan iç içe görünüm işlevlerinden yararlanmak istiyorsanız, açısal yol-segmentini deneyin - ngRoute'u değiştirmek yerine genişletmeyi amaçlamaktadır.


16
Cevabınızın uygunluğunu görmüyorum. Yazar özellikle açısal yol ile açısal-ui-yönlendirici arasındaki farkları sordu. Ayrıca, kendi kitaplıklarınızı tanıtırken yaratıcı olduğunuzun reddi yararlı olacaktır.
flakon

23
Alaka düzeyi basittir: açısal-rota + açısal-rota-segmenti = açısal-ui-yönlendirici. Yani, fark: açısal-ui-yönlendirici - açısal-rota = açısal-rota-segment :)
artch

1
bence geçerli bir cevap. angular-route-segment.com , ui-router kullanmanın yükünü istemeyenler için kesinlikle iyi bir seçimdir. Ayrıca @vially, insanlar bu kütüphaneleri oluşturmak için çok çalışıyor, onu tanıtmak için kötü bir şey değil
phil

19

Genellikle ui-router bir durum mekanizması üzerinde çalışır ... Kolay bir örnekle anlaşılabilir:

Diyelim ki büyük bir müzik kütüphanesi uygulamamız var (örneğin .gaana, saavan ya da başka). Sayfanın alt kısmında, sayfanın tüm durumu boyunca paylaşılan bir müzik çalarınız var.

Diyelim ki çalmak için bazı şarkıları tıklıyorsunuz. Bu durumda, tam sayfayı yeniden yüklemek yerine yalnızca o müzik çalar durumu değişmelidir. Bu, ui-yönlendirici tarafından kolayca ele alınabilir.

NgRoute'deyken görünümü ve denetleyiciyi takıyoruz.


2
bu yapılabilir ve hizmetler ve fabrikalar kullanılarak yapılmalıdır. Bu paketin kullanımı açısal rotaları, durumları ve kalıpları anlama eksikliğidir. Durumlar, uygulamayı özel bir durumda paylaşmak istiyorsanız doğru olan url tarafından işlenir, ayrıca aynı görünümde bir hizmet veri güncellemesine veya url parametresine tepki veren birden fazla denetleyiciniz olabilir. UI yönlendirici işleri karıştırır ve açısal deseni tamamen yok eder.
Pablo Ezequiel Leone

Tamamen katılıyorum. Hala bu devlet makinesini kullanmanın gerekli olduğu bir açıklama bulamıyorum
kushalvm

18

Açısal 1.x

ng-rotası :

ng-route, yönlendirme için angularJS Ekibi tarafından geliştirilmiştir.

ng-route: url (Konum) tabanlı yönlendirme.

Ör:

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

ui-route :

ui-router 3. taraf modülü tarafından geliştirilmiştir.

ui-router: durum tabanlı yönlendirme

Ör:

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

-> ui-router yuvalanmış görünümlere izin verir

-> ui-router ng-route'dan daha güçlü

ng-yönlendirici , ui-yönlendirici


13

ngRoute, Angular ekibi tarafından oluşturulan ve temel istemci tarafı yönlendirme işlevi sağlayan bir modüldür. Bu modül, yönlendirme için oldukça güçlü bir temel sağlar ve bu blog yayınında örneklendiği gibi sağlam yönlendirme işlevselliği vermek için oldukça kolay bir şekilde oluşturulabilir (yazar Ward Bell ve Ben Nadel arasındaki yorum yolunu okuduğunuzdan emin olun - bunlar Açısal Artıları)

ui-yönlendirici odağı url merkezli yollardan url'ye yansıtılabilecek veya yansımayabilecek uygulama "durumlarına" kaydırır.

Ui-router tarafından eklenen birincil özellikler yuvalanmış durumlar ve adlandırılmış görünümlerdir.

İç içe durumlar, uygulamanın çeşitli parçaları için denetleyici mantığını ayırmanıza olanak tanır. Bunun çok basit bir örneği, üstte birincil gezinme, solda ikincil bir gezinme listesi ve sağda içerik bulunan bir uygulama olabilir. Yuvalanmış durumlar olmadan, tek bir denetleyicinin genellikle ikincil gezinme ve içerik için görüntüleme mantığını işlemesi gerekir. İç içe yönlendirme, bu endişeleri ayırmanıza olanak tanır.

Adlandırılmış görünümler, ui-yönlendiricinin başka bir ek özelliğidir. NgRoute ile, bir sayfada yalnızca tek bir ngView yönergesine sahip olabilirken, ui-router'daki adlandırılmış görünümlerle birden çok ui-görünüm yönergesi belirtebilirsiniz ve daha sonra her durum ad görünümlerinin şablonunu ve denetleyicisini etkileyebilir. Bunun basit bir örneği, uygulamanızın ana içeriğinin birincil görünüm olması ve daha sonra ayrı bir kullanıcı arayüzü görünümü olacak bir altbilgi çubuğuna sahip olmak olacaktır. Bu senaryoda, altbilgi denetleyicisi artık durum / rota değişikliklerini dinlemek zorunda değildir.

Bu podcast bölümünde ngRoute ve ui-yönlendiricinin iyi bir karşılaştırmasını bulabilirsiniz .

İşleri daha karmaşık hale getirmek için, Angular ekibinin Angular'ın 1.5 ve 2.0 sürümleri için piyasaya sürmeyi beklediği yeni "resmi" yönlendirme modülüne göz atın. Bu ngRoute modülünün yerini alacaktır. İşte yeni Yönlendirici modülü için mevcut belgeler - uygulama henüz tamamlanmadığı için bu kayıttan itibaren oldukça seyrek. İzle Burada bu modül aslında ne zaman çıkacağını ilgili daha fazla haber için.


11

ngRoute, herhangi bir rota için yalnızca bir görünüm ve denetleyici belirtebileceğiniz temel bir yönlendirme kütüphanesidir.

Ui-yönlendirici ile hem paralel hem de iç içe birden çok görünüm belirleyebilirsiniz. Dolayısıyla, uygulamanız herhangi bir karmaşık yönlendirme / görünüm gerektiriyorsa (veya gelecekte gerektirebilirse), ui-yönlendirici ile devam edin.

Bu AngularUI Router için başlangıç ​​kılavuzu.


10

Bilmeniz gereken temel şey: ng-router kullanımları $location.path()ve ui-router kullanımları$state.go

Tüm özellikleri bize bırakın.


8

ui yönlendirici hayatınızı kolaylaştırır! Uygulamalarınıza enjekte ederek AngularJS uygulamanıza ekleyebilirsiniz ...

ng-route çekirdek AngularJS'nin bir parçası olarak geliyor, bu yüzden daha basit ve size daha az seçenek sunuyor ...

Ng-rotasını daha iyi anlamak için buraya bakın: https://docs.angularjs.org/api/ng

Ayrıca kullanırken, kullanmayı unutmayın: ngView ..

ng-ui-router farklı ama:

https://github.com/angular-ui/ui-router ama size daha fazla seçenek sunuyor ....


6

AngularUI Router, arayüzünüzün parçalarını bir durum makinesinde düzenlemenizi sağlayan AngularJS için bir yönlendirme çerçevesidir. URL yolları etrafında düzenlenmiş Açısal ngRoute modülündeki $ route hizmetinden farklı olarak, UI-Router isteğe bağlı olarak yolları ve diğer davranışları ekleyebilecek eyaletler etrafında düzenlenir.

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


4

ngRoute, Angular.js ekibi tarafından geliştirilen ve önceki Angular çekirdeğinin parçası olan bir modüldür.

ui-router, yönlendirme yeteneklerini geliştirmek ve geliştirmek için Angular.js projesi dışında yapılan bir çerçevedir.


3

1- ngRoute, açısal ekip tarafından geliştirilirken, ui-router 3. taraf bir modüldür. 2- ngRoute, rota URL'sine göre yönlendirmeyi uygularken ui-router, uygulamanın durumuna göre yönlendirmeyi uygular. 3- ui-router ng-rotanın sağladığı her şeyi ve ayrıca iç içe durumlar ve çoklu adlandırılmış görünümler gibi bazı ek özellikler sağlar.


0

ng-View(AngularJS ekibi tarafından geliştirilmiştir) sayfa başına yalnızca bir kez kullanılabilirken ui-View(3. taraf modülü) sayfa başına birden çok kez kullanılabilir.

ui-View bu nedenle en iyi seçenektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.