YYY*_*YYY 171 javascript angularjs angularjs-routing angular-ui-router
请解释之间的差异$routeProvider,并$stateProvider在AngularJS.
哪个是最佳做法?
Pan*_*kar 244
两者在SPA(单页应用程序)中用于路由目的的工作相同.
控制器和视图的URL(HTML部分).它监视$ location.url()并尝试将路径映射到现有路由定义.
HTML
<div ng-view></div>
Run Code Online (Sandbox Code Playgroud)
上面的标签将根据$routeProvider.when()您在.config角度的(配置阶段)中提到的条件渲染模板
限制: -
ng-view页面$routeProvider失败.(实现这一目标,我们需要使用类似的指令ng-include,ng-switch,ng-if,ng-show,这看起来不错,让他们在SPA)AngularUI Router是AngularJS的路由框架,它允许您将接口的各个部分组织到状态机中.UI-Router围绕状态进行组织,可以选择附加路由以及其他行为.
多个和命名视图
另一个很棒的功能是能够在模板中拥有多个ui视图.
虽然多个并行视图是一个强大的功能,但您通常可以通过嵌套views并将这些视图与嵌套状态配对来更有效地管理接口.
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
Run Code Online (Sandbox Code Playgroud)
大多数ui-router人的权力是它可以管理嵌套状态和视图.
优点
ui-view在单页上拥有多个ui-view="some"通过使用@带状态名称的绝对路由来更改状态.@使用更改ui-view="some".这将取代ui-view而不是检查它是否嵌套.ui-sref创建hrefURL URL,也可以在json格式中给出状态参数.为了更好地灵活地使用状态的各种嵌套视图,我宁愿你去 ui-router
Ani*_*nha 74
Angular自己的ng-Router URLs在路由时会考虑,UI-Router states除了URL之外还要考虑.
状态绑定到命名,嵌套和并行视图,允许您有力地管理应用程序的界面.
在ng-router中,当你通过<a href="">标签提供链接时,你必须非常小心URL ,在UI-Router中你必须state记住.你提供像这样的链接<a ui-sref="">.请注意,即使您<a href="">在UI-Router中使用,就像在ng-router中一样,它仍然可以工作.
因此,即使您决定某天更改网址,您的网址state也会保持不变,只需更改网址即可.config.
虽然ngRouter可用于制作简单的应用程序,但UI-Router使复杂应用程序的开发变得更加容易.这是它的维基.