Angular-route和angular-ui-router有什么区别?

我计划在我的大型应用程序中使用AngularJS。因此,我正在寻找要使用的正确模块。

ngRoute(angular-route.js)ui-router(angular-ui-router.js)模块有什么区别?

在许多使用ngRoute的文章中,路由配置有$routeProvider。但是,当与 ui 路由器一起使用时,路由配置为使用$stateProvider和$urlRouterProvider

我应该使用哪个模块来获得更好的可管理性和可扩展性?


答案 1

ui路由器是一个第三方模块,非常强大。它支持普通ngRoute可以做的所有事情以及许多额外的功能。

以下是选择ui路由器而不是ngRoute的一些常见原因:

  • ui路由器允许嵌套视图多个命名视图。这对于较大的应用程序非常有用,其中您可能具有从其他部分继承的页面。

  • ui 路由器允许您根据状态名称在状态之间进行强类型链接。在一个位置更改 url 会在使用 ui-sref 构建链接时将每个链接更新到该状态。对于 URL 可能更改的大型项目非常有用。

  • 还有装饰器的概念,可用于允许根据尝试访问的URL动态创建路由。这可能意味着您不需要事先指定所有路线。

  • 状态允许您映射和访问有关不同状态的不同信息,并且可以通过$stateParams轻松地在状态之间传递信息。

  • 您可以轻松确定自己是否处于某个状态或某个状态的父级,以通过 ui-router 提供的$state调整模板中的 UI 元素(突出显示当前状态的导航),您可以通过将其设置为 在 上公开。$rootScoperun

从本质上讲,ui路由器是具有更多功能的ngRouter,在工作表下它是完全不同的。这些附加功能对于大型应用程序非常有用。

更多信息:


答案 2

ngRoute是由AngularJS团队开发的模块,它是AngularJS核心的早期部分。

ui-router是一个框架,是在AngularJS项目之外制作的,用于改进和增强路由功能。

从 ui 路由器文档中

AngularUI Router是AngularJS的路由框架,它允许您将接口的各个部分组织到状态机中。与Angular核心中的$route服务(围绕URL路由组织)不同,UI路由器是围绕状态组织的,状态可以选择附加路由以及其他行为。

状态绑定到命名视图、嵌套视图和并行视图,使您能够有力地管理应用程序的接口。

它们都不是更好,您将不得不选择最适合您的项目。

但是,如果您计划在应用程序中具有复杂的视图,并且想要处理“$state”概念。我建议你选择ui路由器。