Câu trả lời:
Cả hai đều làm công việc tương tự như chúng được sử dụng cho mục đích định tuyến trong SPA (Ứng dụng trang đơn).
URL tới bộ điều khiển và chế độ xem (các phần HTML). Nó xem $ location.url () và cố gắng ánh xạ đường dẫn đến một định nghĩa tuyến đường hiện có.
HTML
<div ng-view></div>
Thẻ ở trên sẽ hiển thị mẫu từ $routeProvider.when()điều kiện mà bạn đã đề cập trong .config(giai đoạn cấu hình) của góc
Hạn chế: -
ng-viewtrên trang$routeProvidersẽ thất bại. (để đạt được điều đó, chúng ta cần phải sử dụng chỉ thị như ng-include, ng-switch, ng-if, ng-show, trông xấu để có chúng trong SPA)AngularUI Router là một khung định tuyến cho AngularJS, cho phép bạn sắp xếp các phần của giao diện vào một máy trạng thái. UI-Router được tổ chức xung quanh các trạng thái, có thể tùy chọn có các tuyến đường, cũng như các hành vi khác, được đính kèm.
Nhiều lượt xem và được đặt tên
Một tính năng tuyệt vời khác là khả năng có nhiều khung nhìn ui trong một mẫu.
Mặc dù nhiều chế độ xem song song là một tính năng mạnh mẽ, nhưng bạn thường có thể quản lý các giao diện của mình hiệu quả hơn bằng cách lồng nhau viewvà ghép các chế độ xem đó với các trạng thái lồng nhau.
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
Phần lớn ui-routersức mạnh của nó là nó có thể quản lý trạng thái & khung nhìn lồng nhau.
Ưu
ui-viewtrên một trangui-view="some"trạng thái chỉ bằng cách sử dụng định tuyến tuyệt đối bằng @tên trạng thái.@để thay đổi ui-view="some". Điều này sẽ thay thế thay ui-viewvì kiểm tra nếu nó được lồng hay không.ui-srefđể tạo hrefURL động trên cơ sở URLđược đề cập ở trạng thái, bạn cũng có thể cung cấp thông số trạng thái ở jsonđịnh dạng.Để biết thêm thông tin Bộ định tuyến góc
Để linh hoạt hơn với chế độ xem lồng nhau khác nhau với các trạng thái, tôi muốn bạn đi ui-router
$stateProvider&$routeProvider
Bộ định tuyến ng của riêng Angular sẽ URLsđược xem xét trong khi định tuyến, Bộ định tuyến UI statesngoài URL.
Các trạng thái bị ràng buộc với các khung nhìn được đặt tên, lồng nhau và song song, cho phép bạn quản lý mạnh mẽ giao diện của ứng dụng.
Trong khi ở ng-router, bạn phải rất cẩn thận về các URL khi cung cấp liên kết qua <a href="">thẻ, trong UI-Router bạn chỉ phải ghi statenhớ. Bạn cung cấp liên kết như thế nào <a ui-sref="">. Lưu ý rằng ngay cả khi bạn sử dụng <a href="">trong UI-Router, giống như bạn làm trong ng-router, nó vẫn sẽ hoạt động.
Vì vậy, ngay cả khi bạn quyết định thay đổi URL của mình một ngày nào đó, bạn statesẽ vẫn giữ nguyên và bạn chỉ cần thay đổi URL tại .config.
Mặc dù ngRouter có thể được sử dụng để tạo các ứng dụng đơn giản, UI-Router giúp phát triển dễ dàng hơn nhiều cho các ứng dụng phức tạp. Đây là wiki của nó .
$ route: Điều này được sử dụng cho các URL liên kết sâu tới các bộ điều khiển và chế độ xem (các phần HTML) và xem $ location.url () để ánh xạ đường dẫn từ định nghĩa tuyến đường hiện có.
Khi chúng tôi sử dụng ngRoute, tuyến đường được định cấu hình với $ routeProvider và khi chúng tôi sử dụng ui-router, tuyến đường được định cấu hình với $ stateProvider và $ urlRouterProvider.
<div ng-view></div>
$routeProvider
.when('/contact/', {
templateUrl: 'app/views/core/contact/contact.html',
controller: 'ContactCtrl'
});
<div ui-view>
<div ui-view='abc'></div>
<div ui-view='abc'></div>
</div>
$stateProvider
.state("contact", {
url: "/contact/",
templateUrl: '/app/Aisel/Contact/views/contact.html',
controller: 'ContactCtrl'
});