각도 경로와 각도 UI 라우터의 차이점은 무엇입니까?


1080

큰 응용 프로그램에서 AngularJS 를 사용할 계획 입니다. 그래서 사용하기에 적합한 모듈을 찾는 과정에 있습니다.

ngRoute (angular-route.js)ui-router (angular-ui-router.js) 모듈 의 차이점은 무엇입니까 ?

ngRoute 가 사용되는 많은 기사 에서 route는 $ routeProvider 로 구성됩니다 . 그러나 ui-router 와 함께 사용 하면 route는 $ stateProvider 및 $ urlRouterProvider로 구성됩니다 .

더 나은 관리 효율성과 확장 성을 위해 어떤 모듈을 사용해야합니까?


11
하지 언급에 각도의 새로운 라우터 1.4 및 2.0
자크 Lysobey

답변:


1112

ui-router 는 타사 모듈이며 매우 강력합니다. 일반적인 ngRoute가 할 수있는 모든 기능과 많은 추가 기능을 지원합니다.

ngRoute를 통해 ui-router를 선택하는 일반적인 이유는 다음과 같습니다.

  • ui-router는 중첩 된 뷰여러 개의 명명 된 뷰를 허용합니다 . 다른 섹션에서 상속 된 페이지가있을 수있는 더 큰 앱에서 매우 유용합니다.

  • ui-router를 사용하면 상태 이름을 기반으로 상태를 강력하게 연결할 수 있습니다. 한곳에서 URL을 변경하면 (으)로 링크를 작성할 때 모든 링크가 해당 상태로 업데이트됩니다 ui-sref. URL이 변경 될 수있는 대규모 프로젝트에 매우 유용합니다.

  • 액세스하려는 URL을 기반으로 경로를 동적으로 생성하는 데 사용할 수있는 데코레이터 개념도 있습니다. 즉, 미리 모든 경로를 지정할 필요는 없습니다.

  • 상태를 사용하면 여러 상태에 대한 다양한 정보를 매핑하고 액세스 할 수 있으며를 통해 상태간에 정보를 쉽게 전달할 수 있습니다 $stateParams.

  • 를 통해 당신이 당신의 템플릿 내에서 UI 요소 (현재 상태의 탐색을 강조)을 조정하는 국가의 주 또는 부모에 있는지 쉽게 확인할 수 있습니다 $state당신이 그것을 설정을 통해 노출 될 수 있습니다 UI 라우터에 의해 제공 $rootScoperun.

본질적으로 ui-router는 더 많은 기능을 가진 ngRouter이며 시트 아래에는 상당히 다릅니다. 이러한 추가 기능은 대규모 응용 프로그램에 매우 유용합니다.

추가 정보:


134
전반적으로 이것이 가장 좋은 설명이지만 한 가지 핵심 사항은 "전체적으로 ui-router는 더 많은 기능을 가진 ngRouter"입니다. 그것보다 훨씬 더 근본적입니다. ngRoute단지 컨트롤러와 템플릿을 URL 경로에 할당 할 수있게하는 반면, 기본적인 추상화 ui.router는보다 강력한 개념 인 상태입니다.
Nate Abele

23
이 답변에서 파일 크기의 차이를 지적하는 것이 관련이있을 수 있습니다. 현재 ngRoute: 35.9kB / 4.4kB / 2.5kB 및 ui-router: 162.9kB / 30.4kB / 11.6kB (미화 / 축소 / gzipped).
Alex Ross

35
우리는 2015 년에 162kb를 심각하게 걱정하고 있습니까?
메기

27
왜 @Catfish가 아닌가? 인터넷 연결 상태가 좋지 않은 세계에는 많은 곳이 있습니다. 매우 중요합니다.
Bruno Casali

4
@tfrascaroli 사용자가 처음으로 앱을로드하는 경우 페이지로드 시간 이 이탈률과 밀접한 관련이 있습니다 . 다른 130kB를 페이지에 추가하기 전에 비용 / 혜택을 확실히 고려할 것입니다.
안토니 매닝 - 프랭클린

131

ngRoute 는 AngularJS 코어의 초기 부분 인 AngularJS 팀이 개발 한 모듈입니다.

ui-router 는 라우팅 기능을 향상시키고 향상시키기 위해 AngularJS 프로젝트 외부에서 만들어진 프레임 워크입니다.

ui-router 문서에서 :

AngularUI 라우터는 인터페이스의 일부를 상태 머신으로 구성 할 수있는 AngularJS의 라우팅 프레임 워크입니다. URL 라우트를 중심으로 구성되는 Angular 코어의 $ route 서비스와 달리 UI-Router는 상태를 중심으로 구성되며 선택적으로 라우트 및 기타 동작이 첨부 될 수 있습니다.

상태는 명명 된, 중첩 및 병렬 뷰에 바인딩되므로 응용 프로그램 인터페이스를 강력하게 관리 할 수 ​​있습니다.

둘 중 어느 쪽이 더 낫지는 않으므로 프로젝트에 가장 적합한 것을 선택해야합니다.

그러나 응용 프로그램에서 복잡한 뷰를 계획하고 "$ state"개념을 처리하려는 경우. ui-router를 선택하는 것이 좋습니다.


1
FWIW 방금 angularjs의 UI 라우터에 대해 머리를 두드리는 데 꽤 많은 시간을 보냈습니다. 이 문서는 매우 죄송합니다. 현재 몇 년 동안 외로워졌습니다. 중요한 안내서에 대한 깨진 링크, 튜토리얼에서 이름이 잘못된 nuget 패키지가 있습니다. 나는이 문제를 알아낼 수 후 결국 나는 포기 stackoverflow.com/questions/23585065/...을 (겉으로는 다른 많은 사람들과 함께). 지금 ngRoute를 시험해보세요 ...
UnionP



35

ngRoute 패러다임 내에 구현 된 중첩 뷰 기능을 사용하려면 각도 라우팅 세그먼트를 사용해보십시오. ngRoute를 교체하는 대신 확장하는 것을 목표로합니다.


16
귀하의 답변과 관련이 없습니다. 저자는 angular-route와 angular-ui-router의 차이점에 대해 구체적으로 물었습니다. 또한 자신이 만든 라이브러리라는 고지 사항은 자신의 라이브러리를 홍보 할 때 유용합니다.
vily

23
관련성은 간단합니다 : 앵귤러 루트 + 앵귤러 루트 세그먼트 = 앵귤러 UI 라우터. 따라서 차이점은 다음과 같습니다. angular-ui-router-angular-route = angular-route-segment :)
artch

1
나는 그 정답이라고 생각합니다. angular-route-segment.com 은 ui-router를 사용하는 오버 헤드를 원하지 않는 사람들에게는 확실히 좋은 선택입니다. 또한 @vially, 사람들이 이러한 라이브러리를 생성하기 위해 최선을 다하고, 그 나쁜 것은 그것을 촉진

19

일반적으로 ui-router는 상태 메커니즘에서 작동합니다. 간단한 예를 통해 이해할 수 있습니다.

..gaana 또는 saavan 또는 기타와 같은 음악 라이브러리를 많이 적용한다고 가정 해 봅시다. 페이지 하단에는 페이지의 모든 상태에서 공유되는 음악 플레이어가 있습니다.

이제 재생할 노래를 클릭한다고 가정 해 봅시다. 이 경우 전체 페이지를 다시로드하는 대신 해당 음악 플레이어 상태 만 변경해야합니다. ui-router로 쉽게 처리 할 수 ​​있습니다.

ngRoute에서 뷰와 컨트롤러를 연결하기 만하면됩니다.


2
이것은 서비스와 팩토리를 사용하여 수행해야합니다. 이 패키지를 사용하면 각도 경로, 상태 및 패턴에 대한 이해가 부족합니다. 상태는 url에 의해 처리되므로, 특정 상태에서 앱을 공유하려는 경우 정확합니다. 또한 서비스 데이터 업데이트 또는 url 매개 변수에 반응하는 동일한보기에 여러 컨트롤러를 가질 수 있습니다. UI 라우터가 엉망이되어 각도 패턴을 완전히 파괴합니다.
Pablo Ezequiel Leone

완전히 동의 해.
여전히이

18

각도 1.x

ng-route :

ng-route는 angularJS 팀에서 라우팅을 위해 개발했습니다.

ng-route : url (위치) 기반 라우팅.

전의:

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

ui-route :

ui-router는 타사 모듈에 의해 개발되었습니다.

ui-router : 상태 기반 라우팅

전의:

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

-> ui-router는 중첩 된 뷰를 허용합니다

ng-route보다 더 강력한 ui-router

ng-router , ui-router


13

ngRoute는 Angular 팀이 구축 한 모듈로 기본적인 클라이언트 측 라우팅 기능을 제공합니다. 이 모듈은 라우팅을위한 매우 강력한 기반을 제공하며이 블로그 게시물에 예시 된 것처럼 견고한 라우팅 기능을 제공하기 위해 매우 쉽게 구축 할 수 있습니다 (저자는 저자 인 Ward Bell과 Ben Nadel의 의견 추적을 읽으십시오). 몇 가지 각도 전문가)

ui-router는 URL 중심 경로에서 응용 프로그램 "상태"로 포커스를 이동합니다.이 상태는 URL에 반영되거나 반영되지 않을 수 있습니다.

ui-router가 추가 한 주요 기능은 중첩 된 상태와 명명 된 뷰입니다.

중첩 상태를 사용하면 다양한 응용 프로그램에 대한 컨트롤러 논리를 분리 할 수 ​​있습니다. 가장 간단한 예는 상단을 가로 지르는 기본 탐색, 왼쪽을 따라 보조 탐색 목록, 오른쪽에 콘텐츠가있는 앱입니다. 중첩 된 상태가 없으면 단일 컨트롤러는 일반적으로 컨텐츠뿐만 아니라 보조 탐색에 대한 디스플레이 로직을 처리해야합니다. 중첩 라우팅을 통해 이러한 문제를 분리 할 수 ​​있습니다.

명명 된 뷰는 UI 라우터의 또 다른 추가 기능입니다. ngRoute를 사용하면 페이지에 단일 ngView 지시문 만있을 수 있지만 ui-router의 명명 된 뷰를 사용하면 여러 ui-view 지시문을 지정할 수 있으며 각 상태는 이름 뷰의 템플릿 및 컨트롤러에 영향을 줄 수 있습니다. 이에 대한 간단한 예는 앱의 기본 콘텐츠를 기본보기로 설정 한 다음 별도의 ui-view 인 바닥 글 막대를 갖는 것입니다. 이 시나리오에서 바닥 글의 컨트롤러는 더 이상 상태 / 경로 변경 사항을 수신하지 않아도됩니다.

이 팟 캐스트 에피소드 에서 ngRoute와 ui-router를 잘 비교할 수 있습니다 .

상황을 더욱 혼란스럽게 만들기 위해 Angular 팀이 Angular 1.5 및 2.0 버전에서 출시 할 것으로 예상되는 새로운 "공식"라우팅 모듈을 주시하십시오. ngRoute 모듈이 교체됩니다. 다음 은 새로운 라우터 모듈에 대한 최신 문서입니다. 구현이 아직 완료되지 않았기 때문에이 게시물을 작성하는 시점에는 상당히 드문 편입니다. 시계 여기에 이 모듈이 실제로 출시되는시기에 대한 자세한 소식.


11

ngRoute는 모든 라우팅에 대해 하나의보기와 컨트롤러 만 지정할 수있는 기본 라우팅 라이브러리입니다.

ui-router를 사용하면 병렬 및 중첩 된 여러보기를 지정할 수 있습니다. 따라서 응용 프로그램에 복잡한 라우팅 / 뷰가 필요하거나 나중에 필요할 경우 ui-router로 이동하십시오.

이것은 AngularUI 라우터에 대한 시작 안내서입니다.


10

알아야 할 기본 사항 : ng-router 사용 $location.path()및 ui-router 사용$state.go

모든 기능을 우리에게 맡기십시오.


8

UI 라우터는 당신의 인생을 더 쉽게 만듭니다! 응용 프로그램에 주입하여 AngularJS 응용 프로그램에 추가 할 수 있습니다 ...

ng-route 핵심 AngularJS의 일부로 제공되므로 더 간단하고 옵션이 적습니다 ...

ng-route를 더 잘 이해하려면 여기를 참조하십시오 : https://docs.angularjs.org/api/ngRoute

또한 사용할 때 ngView를 잊지 마십시오.

ng-ui-router는 다르지만 다음과 같습니다.

https://github.com/angular-ui/ui-router 그러나 더 많은 옵션을 제공합니다 ....


6

AngularUI 라우터는 인터페이스의 일부를 상태 머신으로 구성 할 수있는 AngularJS의 라우팅 프레임 워크입니다. URL 라우트를 중심으로 구성된 Angular ngRoute 모듈의 $ route 서비스와 달리 UI-Router는 상태를 중심으로 구성되며 선택적으로 라우트 및 기타 동작이 첨부 될 수 있습니다.

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


4

ngRoute는 Angular.js 팀이 개발 한 모듈로, 이전에는 Angular 코어의 일부였습니다.

ui-router는 라우팅 기능을 개선하고 향상시키기 위해 Angular.js 프로젝트 외부에서 만들어진 프레임 워크입니다.


3

1-ngRoute는 각도 팀에서 개발 한 반면 ui-router는 타사 모듈입니다. 2-ngRoute는 경로 URL을 기반으로 라우팅을 구현하고 ui-router는 응용 프로그램의 상태를 기반으로 라우팅을 구현합니다. 3-ui-router는 ng-route가 제공하는 모든 기능과 중첩 된 상태 및 여러 명명 된 뷰와 같은 추가 기능을 제공합니다.


0

ng-View(AngularJS 팀에서 개발)는 페이지 당 한 번만 사용할 수있는 반면 ui-View(타사 모듈)은 페이지 당 여러 번 사용할 수 있습니다.

ui-View 따라서 최선의 선택입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.