ui-router使用配置

angular路由

路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分。

那么,对于angular而言,它自然也有内置的路由模块:叫做ngRoute。

 

不过,大家很少用它,因为它的功能太有限,往往不能满足开发需求!!

一个基于ngRoute开发的第三方路由模块,叫做ui.router,受到了大家的“追捧”。

 

ngRoute vs ui.router

 

首先,无论是使用哪种路由,作为框架额外的附加功能,它们都将以模块依赖的形式被引入,简而言之就是:在引入路由源文件之后,你的代码应该这样写(以ui.router为例):angular.module("myApp", ["ui.router"]); // myApp为自定义模块,依赖第三方路由模块ui.router

这样做的目的是:在程序启动(Angular)的时候,加载依赖模块(如:ui.router),将所有挂载在该模块的服务(provider),指令(directive),过滤器(filter)等都进行注册,那么在后面的程序中便可以调用了。

说到这里,就得看看ngRoute模块和ui.router模块各自都提供了哪些服务,哪些指令?

 

ngRoute

$routeProvider(服务提供者) ——— 对应于下面的urlRouterProvider和stateProvider

$route(服务) ——— 对应于下面的urlRouter和state

$routeParams(服务) ——— 对应于下面的stateParams

ng-view(指令) ——— 对应于下面的ui-view

ui.router

$urlRouterProvider(服务提供者) ——— 用来配置路由重定向

$urlRouter(服务)

$stateProvider(服务提供者) ——— 用来配置路由

$state(服务) ——— 用来显示当前路由状态信息,以及一些路由方法(如:跳转)

$stateParams(服务) ——— 用来存储路由匹配时的参数

ui-view(指令) ——— 路由模板渲染,对应的dom相关联

ui-sref(指令)

 

(注:服务提供者:用来提供服务实例和配置服务。)

 

 

这样一看,其实ui.router和ngRoute大体的设计思路,对应的模块划分都是一致的(毕竟是同一个团队开发),不同的地方在于功能点的实现和增强。

那么问题来了:ngRoute弱在哪些方面,ui.router怎么弥补了这些方面?

这里,列举两个最重要的方面来说(其他细节,后面再说):

多视图

嵌套视图

 

实例笔记