当前位置: 首页 > news >正文

angular-路由与导航部分梳理

为什么80%的码农都做不了架构师?>>>   hot3.png

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

  2. Angular的路由是一个可选的服务,用来呈现URL所对应的视图,并不是Angular核心的一部分,而是在它自己的包中: import { RouterModule, Routes } from '@angular/router';
  3. 路由配置,定义路由后,在app.module.ts的imports中,用RouterModule.forRoot()来配置路由;(先引入RouterModule),在特性模块中,配置路由时,只能改用RouterModule.forChild();<br>
注意:path不能以/开头,:id是一个路由参数的令牌(Token);data:存放每个路由有关的任何信息;' '表示默认路径;** 表示当所请求的URL不匹配时,就定义到这里,常用于404页;<br>
  1. 将{*enableTracing:true}作为第二参数传给RouterModule.forRoot()可以将每个导航生命周期的事件初出道浏览器的控制台;
  2. 路由出口:<router-outlet></router-let>,在根级模板中配置,比如:body;路由器会把它添加到DOM中,紧接着在它之后插入到导航到的视图元素;
  3. routerLink可以绑在<a>标签上,根据用户操作导航;<a routerLink="/"></a>
  4. 路由器状态: 在导航时的每个生命周期成功完成时,路由器会构建出一个 ActivatedRoute 组成的树,它表示路由器的当前状态。 可以在应用中的任何地方用 Router 服务及其 routerState 属性来访问当前的 RouterState 值。 RouterState 中的每个 ActivatedRoute 都提供了从任意激活路由开始向上或向下遍历路由树的一种方式,以获得关于父、子、兄弟路由的信息。paramMap:包含一个当前路由的必要参数和可选参数组成的Map对象;queryParamMap:包含一个对所有路由都有效的查询参数组成的map对象;
总结: 应用有一个配置过的路由器。 外壳组件中有一个 RouterOutlet,它能显示路由器所生成的视图。 它还有一些 RouterLink,用户可以点击它们,来通过路由器进行导航。关键词:Router,RouterModule,Routes,Route,RouteOutlet,RouterLink,RouterLinkActive,ActivatedRoute;

  1. 路由器使用匹配者优先的策略来匹配路由;浏览器的初始URL为:localhost:3000/
  • CanActivate 守卫:检查路由的访问权限;
  • CanActivateChild 守卫:检查子路由的访问权限
  • CanDeactivate 守卫:(询问是否丢弃未保存的更改)
  • Resolve 守卫:预先获取路由数据
  • CanLoad 守卫:在加载特性模块之前进行检查;
  1. 构造路由模块: 路由模块的特性:
  • 把路由单独分离出来;
  • 测试特性模块时,可以替换或移除路由模块;
  • 为路由服务提供商(包括守卫和解析器)提供一个共同的地方;
  • 不要声明模块;
  1. 如果确定哪个组件得实例永远不会复用,可以使用快照(Snapshot)来作为Observable得替代品;this.route.snapshot.paramMap.get('id');

  2. 路由守卫: 使用情况: 该用户可能无权导航到目标组件; 可能用户得先登陆认证; 在显示目标组件前,你可能要先保存数据; 在离开组件前,你可能要先保存修改; 你可能要询问用户:你是否要放弃本次修改,而不用保存;

  3. 守卫返回一个值:

    • 如果返回true,导航过程会继续;
    • 返回false,导航过程会终止,守卫返回一个值:且用户留在原地;
  4. 在分层路由的每个级别上,都可以设置守卫; 路由器会先按照从最深的子路由由下往上检查的顺序来检查 CanDeactivate() 和 CanActivateChild() 守卫。 然后它会按照从上到下的顺序检查 CanActivate() 守卫。 如果特性模块是异步加载的,在加载它之前还会检查 CanLoad() 守卫。 如果任何一个守卫返回 false,其它尚未完成的守卫会被取消,这样整个导航就被取消了;

  5. 惰性加载优点:

  • 可以在用户请求是才加载某些特性区;
  • 对于访问部分应用的用户,可以加快加载速度;
  • 可以不通过增加初始加载的包体积,而持续扩充惰性加载特性区的功能;

转载于:https://my.oschina.net/hyzccc/blog/1839581

相关文章:

  • C# Web Api一个小例子
  • 数塔-动态规划-ccf
  • 【Matplotlib】利用Python进行绘图
  • 单体架构风格
  • CSS outline和border区别
  • python学习之老男孩python全栈第九期_day009之文件操作总结
  • 复杂性研究相关论文
  • 我与Linux系统的藕断丝连
  • 老板让我十分钟上手nx-admin
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Flutter Android端启动白屏
  • 九、一级缓存、二级缓存
  • zabbix监控
  • centos7 go ENV 部署
  • swift leetcode-29 Divide Two Integers
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • C++类的相互关联
  • CSS 专业技巧
  • passportjs 源码分析
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 产品三维模型在线预览
  • 入门级的git使用指北
  • 深入浅出webpack学习(1)--核心概念
  • 什么是Javascript函数节流?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 在weex里面使用chart图表
  • ionic异常记录
  • ###C语言程序设计-----C语言学习(3)#
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.9) MSP (version 4.2)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (接口封装)
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三分钟)速览传统边缘检测算子
  • (十) 初识 Docker file
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)80c52学习之旅-起始篇
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net 调用php,php 调用.net com组件 --
  • .NET 服务 ServiceController
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .pyc文件是什么?
  • /etc/shadow字段详解
  • [04] Android逐帧动画(一)
  • [1525]字符统计2 (哈希)SDUT
  • [20160902]rm -rf的惨案.txt
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [Angular 基础] - 数据绑定(databinding)
  • [BUG] Authentication Error
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]