路由

简介: 路由是什么Angular的路由器能让用户从一个视图导航到另一个视图实现什么样的功能在地址栏输入URL,浏览器就会导航到相应的页面。在页面中点击链接,浏览器就会导航到一个新页面。

路由是什么

Angular的路由器能让用户从一个视图导航到另一个视图

实现什么样的功能

  • 在地址栏输入URL,浏览器就会导航到相应的页面。
  • 在页面中点击链接,浏览器就会导航到一个新页面。
  • 点击浏览器的前进和后退按钮,浏览器就会在你的浏览历史中向前或向后导航。

路由组成

<base href> 元素

大多数带路由的应用都要在index.html的<head>标签下先添加一个<base>元素,来告诉路由器该如何合成导航用的URL。
<base href="/">

导入路由模块

`import { RouterModule, Routes } from '@angular/router';
Angular的路由器是一个可选的服务,它用来呈现指定的URL所对应的视图。 它并不是Angular核心库的一部分,而是在它自己的@angular/router包中。 像其它Angular包一样,我们可以从它导入所需的一切。

配置路由

下面的例子创建了四个路由定义,并用RouterModule.forRoot
方法来配置路由器, 并把它的返回值添加到AppModule
的imports
数组中。

const appRoutes: Routes = [
  { path: 'crisis-center', component: CrisisListComponent },
  { path: 'hero/:id',      component: HeroDetailComponent },
  {
    path: 'heroes',
    component: HeroListComponent,
    data: { title: 'Heroes List' }
  },
  { path: '',
    redirectTo: '/heroes',
    pathMatch: 'full'
  },
  { path: '**', component: PageNotFoundComponent }
];

@NgModule({
  imports: [
    RouterModule.forRoot(
      appRoutes,
      { enableTracing: true } // <-- debugging purposes only
    )
    // other imports here
  ],
  ...
})
export class AppModule { }

这里的路由数组appRoutes
描述如何进行导航。 把它传给RouterModule.forRoot
方法并传给本模块的imports
数组就可以配置路由器。
每个Route
都会把一个URL的path
映射到一个组件。 注意,path
不能以斜杠(/
开头。 路由器会为解析和构建最终的URL,这样当我们在应用的多个视图之间导航时,可以任意使用相对路径和绝对路径。
第二个路由中的:id
是一个路由参数的令牌(Token)。比如/hero/42
这个URL中,“42”就是id
参数的值。 此URL对应的HeroDetailComponent
组件将据此查找和展现id
为42的英雄。 在本章中稍后的部分,我们将会学习关于路由参数的更多知识。
第三个路由中的data
属性用来存放于每个具体路由有关的任意信息。该数据可以被任何一个激活路由访问,并能用来保存诸如 页标题、面包屑以及其它静态只读数据。本章稍后的部分,我们将使用resolve守卫来获取动态数据。
第四个路由中的空路径(''
)表示应用的默认路径,当URL为空时就会访问那里,因此它通常会作为起点。 这个默认路由会重定向到URL /heroes
,并显示HeroesListComponent

最后一个路由中的**
路径是一个通配符。当所请求的URL不匹配前面定义的路由表中的任何路径时,路由器就会选择此路由。 这个特性可用于显示“404 - Not Found”页,或自动重定向到其它路由。
这些路由的定义顺序是刻意如此设计的。路由器使用先匹配者优先的策略来匹配路由,所以,具体路由应该放在通用路由的前面。在上面的配置中,带静态路径的路由被放在了前面,后面是空路径路由,因此它会作为默认路由。而通配符路由被放在最后面,这是因为它能匹配上每一个URL,因此应该只有在前面找不到其它能匹配的路由时才匹配它。
如果我们想要看到在导航的生命周期中发生过哪些事件,可以使用路由器默认配置中的enableTracing选项。它会把每个导航生命周期中的事件输出到浏览器的控制台。 这应该只用于调试。我们只需要把enableTracing: true
选项作为第二个参数传给RouterModule.forRoot()
方法就可以了。

link路由出口

有了这份配置,当本应用在浏览器中的URL变为/heroes
时,路由器就会匹配到path
为heroes
Route
,并在宿主视图中的*RouterOutlet
*之后显示HeroListComponent
组件。

<router-outlet></router-outlet>
<!-- Routed views go here -->
相关文章
|
2月前
|
JavaScript 网络架构
路由的使用
路由的使用
|
6月前
|
算法 网络协议 网络架构
什么情况下适合使用静态路由?什么情况下适合使用动态路由?
什么情况下适合使用静态路由?什么情况下适合使用动态路由?
59 0
|
12月前
|
JavaScript IDE 开发工具
Vue-router 路由详解 多级路由的使用
Vue-router 路由详解 多级路由的使用
144 0
|
消息中间件 RocketMQ 开发者
路由发现和小结|学习笔记
快速学习路由发现和小结
102 0
路由发现和小结|学习笔记
|
网络协议 网络架构
路由是什么
路由介绍: 什么是路由: 路由就是寻径
175 0
|
网络协议 网络架构
路由与交换系列之简单的路由策略与默认路由汇总路由的运用
路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性。在特定的场景 中,路由策略的6种过滤器也能单独使用,实现路由过滤。
3644 1
路由与交换系列之简单的路由策略与默认路由汇总路由的运用
|
网络协议 网络架构
IP路由基础、路由器静态路由配置方法、自治系统、缺省路由的配置方法、路由选路规则、缺省路由、备份路由、等价路由、三种查询路由表命令
路由器特点,网络IP地址规划网络间的特性,基本路由思想,编辑静态路由部分,查询设备整个路由表,查看特定的路由协议时使用,查询目的地址2.2.2.2的路由条目,IP路由表代码写法,IP路由表里的信息,路由表来源,路由表的信息,路由表选路规则,缺点:缺省路由,备份路由,等价路由,做实验的步骤......
IP路由基础、路由器静态路由配置方法、自治系统、缺省路由的配置方法、路由选路规则、缺省路由、备份路由、等价路由、三种查询路由表命令
|
JavaScript
|
网络协议 网络虚拟化 网络架构
单臂路由
臂路由技术实现了不同vlan之间进行通信用户与服务器处于不同vlan,如何才能让用户能够访问服务器呢?方案一:使用一根网线,两端分别插在两个vlan下的接口方案二:借助路由器的路由功能实现vlan通信单臂路由:单臂路由技术能让路由器的一根物理接口对应不同vlan数据的实质是把物理接口分成若干个子接口,这些子接口通过封装802.1q标识,以识别不同vlan的TAG标识配置:1) 对交换机运行vlan和trunk配置2) 创建路由子接口: int g0/0/0.103) 给子接口配置IP地址4) 把子接口封装对应vlan的dot 1q标记:dot 1q termination 为了方便管理网络,根
|
JSON Java API
快速实现一个网关+动态路由(上)
快速实现一个网关+动态路由
233 0
快速实现一个网关+动态路由(上)