请解释AngularJS 中$routeProvider
和之间的区别$stateProvider
。
哪个是最佳实践?
请解释AngularJS 中$routeProvider
和之间的区别$stateProvider
。
哪个是最佳实践?
两者都做同样的工作,因为它们在 SPA(单页应用程序)中用于路由目的。
控制器和视图的 URL(HTML 部分)。它监视 $location.url() 并尝试将路径映射到现有路由定义。
HTML
<div ng-view></div>
上面的标签将根据$routeProvider.when()
您在.config
angular 的(配置阶段)中提到的条件呈现模板
限制:-
ng-view
页$routeProvider
失败。(为了实现这一点,我们需要使用像ng-include
, ng-switch
, ng-if
, 之类的指令,ng-show
在 SPA 中使用它们看起来很糟糕)AngularUI Router 是 AngularJS 的路由框架,它允许您将界面的各个部分组织成一个状态机。UI-Router 是围绕状态组织的,状态可以选择性地附加路由以及其他行为。
多个和命名视图
另一个很棒的功能是能够在模板中拥有多个 ui 视图。
虽然多个并行视图是一项强大的功能,但您通常可以通过嵌套view
s 并将这些视图与嵌套状态配对来更有效地管理您的界面。
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
的大部分ui-router
功能是它可以管理嵌套的状态和视图。
优点
ui-view
在单个页面上有多个ui-view="some"
仅通过使用@
带状态名称的绝对路由来更改状态。@
使用更改ui-view="some"
. 这将替换ui-view
而不是检查它是否嵌套。ui-sref
创建href
URL URL
,也可以在json
格式中给出状态参数。为了使用带有状态的各种嵌套视图获得更好的灵活性,我希望您选择 ui-router
Angular 自带的 ng-RouterURLs
在路由时会考虑,UI-Routerstates
除了 URLs 还考虑。
状态绑定到命名的、嵌套的和并行的视图,使您能够有力地管理应用程序的界面。
在 ng-router 中,通过<a href="">
标签提供链接时必须非常小心 URL ,而在 UI-Router 中,您只需要state
记住。您提供类似<a ui-sref="">
. 请注意,即使您<a href="">
在 UI-Router 中使用,就像您在 ng-router 中所做的一样,它仍然可以工作。
因此,即使您决定在某一天更改您的 URL,您的 URL 也state
将保持不变,您只需要更改.config
.
虽然 ngRouter 可用于制作简单的应用程序,但 UI-Router 使复杂应用程序的开发变得更加容易。这是它的维基。
$route:这用于将 URL 深层链接到控制器和视图(HTML 部分)并监视 $location.url() 以便从现有的路由定义映射路径。
当我们使用 ngRoute 时,路由是用 $routeProvider 配置的,当我们使用 ui-router 时,路由是用 $stateProvider 和 $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'
});