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

Pre*_*ngh 1064 javascript angularjs angularjs-routing angularjs-module angular-ui-router

我打算在我的大型应用程序中使用AngularJS.所以我正在寻找合适的模块.

是什么区别(角route.js)ngRouteUI的路由器(角-UI-router.js)模块?

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

我应该使用哪个模块来提高可管理性和可扩展性?

The*_*One 1105

ui-router是第三方模块,非常强大.它支持正常ngRoute可以执行的所有操作以及许多额外功能.

以下是ui-router比ngRoute选择的一些常见原因:

  • ui-router允许嵌套视图多个命名视图.这对于较大的应用程序非常有用,您可以从其他部分继承页面.

  • ui-router允许您根据状态名称在状态之间建立强类型链接.在一个地方更改网址会在您构建链接时更新指向该状态的每个链接ui-sref.对于URL可能更改的大型项目非常有用.

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

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

  • 你可以很容易确定,如果你在你的模板中调整UI元素(高亮显示当前状态的导航)的状态的状态或者通过母公司$state通过UI路由器,你可以通过设置在其暴露提供$rootScoperun.

本质上,ui-router是具有更多功能的ngRouter,在表单下它是完全不同的.这些附加功能对于大型应用程序非常有用.

更多信息:

  • 总的来说这是最好的解释,但有一个关键点:"总的来说,ui-router是具有更多功能的ngRouter".它比那更基础:`ngRoute`只允许你为URL路由分配控制器和模板,而`ui.router`中的基本抽象是状态,这是一个更强大的概念. (133认同)
  • 2015年我们是否真的担心162kb? (35认同)
  • 为什么不@Catfish?世界上有很多地方网络连接不好,担心它非常重要! (26认同)
  • 在这个答案中,指出文件大小的差异可能与某些人有关.截至目前,`ngRoute`:35.9kB/4.4kB/2.5kB和`ui-router`:162.9kB/30.4kB/11.6kB(未经分离/缩小/压缩). (23认同)
  • @tfrascaroli我不同意 - 如果用户第一次加载您的应用,页面加载时间[与跳出率强烈相关](https://www.soasta.com/blog/mobile-web-performance-monitoring-conversion-率/).在向页面添加另外130kB之前,我肯定会考虑成本/收益. (4认同)
  • 我讨厌争辩,但我们是否认真考虑使用160KB的无限制文件?我们不应该考虑缩小的或者可能是gzipped的(11.6KB)吗?我在管理面板中的一个项目和ui路由器的前端部分使用了角度路由器.我的想法是用户可能不愿意等待,他们实际上无法访问许多资源,但管理员应该而且愿意. (3认同)
  • 我在这里@Catfish,〜130Kb应该不用担心.根据[维基百科](https://en.wikipedia.org/wiki/List_of_countries_by_Internet_connection_speeds)(我肯定不够详尽,但这是一个开始),最快的互联网速度是巴拉圭的速度,平均1.5Mbps.再说一次,与此相比,130Kb是多少.同意这里130Kb和130Kb等等**最终会产生影响.但是为了编写更好的代码和更好的应用程序,我认为我们应该给一些东西一个通行证. (2认同)
  • @tfrascaroli我想你忘了转换位和字节.1.5Mbits是每秒187.5kBytes.这意味着假设100%利用1.5mbit连接,130kB将为客户端的下载时间增加700ms. (2认同)

gab*_*gab 130

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

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

从ui-router 文档:

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

状态绑定到命名,嵌套和并行视图,允许您有力地管理应用程序的界面.

它们都不是更好,你必须选择最适合你的项目.

但是,如果您计划在应用程序中使用复杂视图,并且希望处理"$ state"概念.我建议你选择ui-router.


Asi*_*sik 70

ngRoute是一个角度核心模块,适用于基本场景.我相信他们会在即将发布的版本中添加更强大的功能.

网址:https://docs.angularjs.org/api/ngRoute

Ui-router是一个贡献模块,它克服了ngRoute的问题.主要是嵌套/复杂视图.

网址:https://github.com/angular-ui/ui-router

ui-router和ngRoute之间的一些区别

http://www.amasik.com/angularjs-ngroute-vs-ui-router/

在此输入图像描述


Jak*_*son 50

ngRoute是核心AngularJS框架的一部分.

ui-router是一个社区库,它是为了尝试改进默认路由功能而创建的.

这是一篇关于配置/设置ui-router的好文章:

http://www.ng-newsletter.com/posts/angular-ui-router.html


art*_*tch 34

如果您想利用ngRoute范例中实现的嵌套视图功能,请尝试使用angular-route-segment - 它旨在扩展ngRoute而不是替换它.

  • 相关性很简单:angular-route + angular-route-segment = angular-ui-router.所以,区别在于:angular-ui-router - angular-route = angular-route-segment :) (23认同)
  • 我没有看到你答案的相关性.作者特别询问了angular-route和angular-ui-router之间的区别.此外,在宣传您自己的库时,您作为创建者的免责声明会很有用. (16认同)

Uni*_*der 18

通常ui-router在状态机制上工作......可以通过一个简单的例子来理解:

假设我们有一个音乐库的大应用程序(如..gaana或saavan或任何其他).在页面底部,您有一个音乐播放器,可以在页面的所有状态中共享.

现在让我们假设您只需点击一些歌曲即可播放.在这种情况下,只有该音乐播放器状态应该更改而不是重新加载整页.这可以通过ui-router轻松处理.

在ngRoute中,我们只是附加视图和控制器.

  • 这可以完成,必须使用服务和工厂完成.使用这个包是缺乏对角度路线,状态和模式的理解.状态由url处理,如果你想以specefic状态共享应用程序,这是正确的,而且你可以在同一个视图中有多个控制器对服务数据更新或url参数作出反应.ui路由器弄乱了东西并完全破坏角度模式. (2认同)

Mah*_*h K 18

Angular 1.x

ng-route:

ng-route由angularJS团队开发,用于路由.

ng-route: url(Location)路由.

例如:

$routeProvider
    .when("/home", {
        templateUrl : "home.html"
    })
Run Code Online (Sandbox Code Playgroud)

ui-route:

ui-router由第三方模块开发.

ui-router:基于状态的路由

例如:

 $stateProvider
        .state('home', {
            url: '/home',
            templateUrl: 'home.html'
        })
Run Code Online (Sandbox Code Playgroud)

- > ui-router允许嵌套视图

- > ui-router比ng-route更强大

ng-router, ui-router


Sea*_*ean 13

ngRoute是由Angular团队构建的模块,提供基本的客户端路由功能.这个模块提供了一个相当强大的路由基础,并且可以非常容易地构建,以提供可靠的路由功能,如本博客文章中所示(请务必阅读Ward Bell和Ben Nadel之间的评论路径,作者 - 他们是几个Angular专业人士)

ui-router将焦点从以URL为中心的路由转移到应用程序"状态",这可能会也可能不会反映在URL中.

ui-router添加的主要功能是嵌套状态和命名视图.

嵌套状态允许您为应用程序的各个部分分离控制器逻辑.一个非常简单的例子是一个应用程序,主要导航在顶部,左边是辅助导航列表,右边是内容.如果没有嵌套状态,单个控制器通常必须处理辅助导航的显示逻辑以及内容.嵌套路由允许您分离这些问题.

命名视图是ui-router的另一个附加功能.使用ngRoute,页面上只能有一个ngView指令,而在ui-router中使用命名视图可以指定多个ui-view指令,然后每个状态都能够影响名称视图的模板和控制器.一个非常简单的例子就是让你的应用程序的主要内容成为主要视图,然后还有一个页脚栏,它将是一个单独的ui-view.在这种情况下,页脚的控制器不再需要监听状态/路由更改.

这个播客节目中可以找到ngRoute和ui-router的良好比较.

只是为了让事情更加混乱,请关注Angular团队期望为Angular版本1.5和2.0发布的新"官方"路由模块.这将取代ngRoute模块.以下 是新路由器模块的当前文档 - 由于该实现尚未最终确定,因此该帖子相当稀疏.在这里观看有关何时实际发布此模块的更多新闻.


Kun*_*dia 11

ngRoute是一个基本的路由库,您可以在其中为任何路由指定一个视图和控制器.

使用ui-router,您可以指定多个视图,包括并行和嵌套.因此,如果您的应用程序需要(或将来可能需要)任何类型的复杂路由/视图,请继续使用ui-router.

是AngularUI路由器的最佳入门指南.


dig*_*a d 10

你必须要知道的基本事项:ng-router使用$location.path()和ui-router使用$state.go

让我们了解所有功能.


Ali*_*eza 8

ui路由器让您的生活更轻松!您可以通过将其注入您的应用程序将其添加到AngularJS应用程序中...

ng-route 作为核心AngularJS的一部分,所以它更简单,并为您提供更少的选项......

看看这里更好地理解ng-route:https://docs.angularjs.org/api/ngRoute

使用它时,不要忘记使用:ngView ..

ng-ui-router不同但是:

https://github.com/angular-ui/ui-router但为您提供更多选择....


vah*_*eds 6

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

https://github.com/angular-ui/ui-router