AngularJS에서 $ routeProvider와 $ urlRouterProvider의 차이점은 무엇입니까?


대답 1:

$ routeProvider는 $ stateProvider 위에 현재 AngularJS $ route / $ routeProvider API를 구현하여 사용자가 애플리케이션을 단계별로 $ stateProvider로 쉽게 전환 할 수 있도록하는 shim입니다. 이름과 다른 작은 것들을 만들어내는 것입니다.

현재 AngularJS $ routeProvider는 단일체이므로 코드에서 내부적으로 모든 서비스를 여러 서비스로 분할합니다.

  • 패턴 및 규칙과 일치 할 때 $ location을보고 무언가를 트리거합니다. 뷰 의존성 및 결과를 뷰 지시문에 사용할 수 있도록-> 현재 $ stateProvider, 아마도 별도의 $ view 서비스를 고려하지 않습니까?

따라서 $ urlRouterProvider는 단순히 $ location을 지켜야 할 책임이 있으며, 일치 할 때까지 하나씩 규칙 목록을 통해 실행이 변경 될 때마다 책임이 있습니다. 정확히 "일치하는"정의 및 규칙이 일치 할 때 수행되는 작업은 해당 규칙에 따릅니다. 가장 낮은 수준에서 URL을 처리 한 경우 true를 반환하는 함수입니다. 그러나 RegExps 인 규칙뿐만 아니라 $ urlMatcherFactory를 통해 규칙으로 컴파일되는 자리 표시자가있는 stateholder (state.url에서 사용)에 대한 지원도 있습니다. $ urlRouterProvider는 리디렉션도 지원합니다.

$ urlRouterProvider는 $ routeProvider의 해당 코드보다 이미 빠릅니다. 모든 위치 변경에서 URL 패턴을 다시 구문 분석하지 않고 대신 컴파일 된 UrlMatcher 객체에 매달리기 때문입니다.


대답 2:

‘$ routeProvider’의 모듈 이름은‘ngRoute’이고‘$ urlRouterProvider’의 모듈 이름은‘ui.router’입니다.

‘ngRoute’는 라우팅을 위해 URL을 처리하고‘ui-router’는 url 이외의‘상태’를 처리합니다. 상태는 중첩되고 복잡한보기를 만드는 데 도움이됩니다. ‘$ stateParams’의 도움으로 주들간에 정보를 전달할 수도 있습니다.

ngRoute에서는 다음과 같이 링크를 작성합니다.

그러나 'ui-router'에서 링크는 일반적으로 다음과 같이 작성됩니다.

간단한 응용 프로그램에는‘ngRoute’를 사용하고 복잡한 UI 기반 더 큰 applciations에는‘ui-router’를 사용합니다.

‘ui-router’는‘ngRoute’에있는 모든 기능과 대규모 애플리케이션에 적합한 여러 가지 추가 기능을 제공합니다.