文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue Router中Matcher的初始化流程是什么

2023-06-30 02:40

关注

这篇文章主要讲解了“Vue Router中Matcher的初始化流程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue Router中Matcher的初始化流程是什么”吧!

Matcher

createMatcher()的初始化

了解相关的几个概念

1、Location类型

对url的结构化描述。比如url = “/main?p1=1&p2=2222&p3=3333”,它的path就是“ /main” , query 是{ p1:1, p2:222, p3:333 }

declare type Location = {  _normalized?: boolean;  name?: string;  path?: string;  hash?: string;  query?: Dictionary<string>;  params?: Dictionary<string>;  append?: boolean;  replace?: boolean;}

2、rowLocation类型

declare type RawLocation = string | Location  //除了是Location类型还可以是字符串

3、Route类型

表示一条路由,属性也包括path、query、hash等。重要的是mached它表示匹配到的所有的 RouteRecord 对象。

declare type Route = {  path: string;  name: ?string;  hash: string;  query: Dictionary<string>;  params: Dictionary<string>;  fullPath: string;  matched: Array<RouteRecord>;  redirectedFrom?: string;  meta?: any;}

4、RouteRecord类型

declare type RouteRecord = {  path: string;  regex: RouteRegExp;  components: Dictionary<any>;  instances: Dictionary<any>;   //表示组件的实例 一个对象类型  name: ?string;  parent: ?RouteRecord;  //表示父的 RouteRecord   redirect: ?RedirectOption;  matchAs: ?string;  beforeEnter: ?NavigationGuard;  meta: any;  props: boolean | Object | Function | Dictionary<boolean | Object | Function>;}

addRoutes()的实现

//记录path 及 path到RouteRecord的映射if (!pathMap[record.path]) {    pathList.push(record.path)  //  ['/aaa/bbb','/cccc/ddd']    pathMap[record.path] = record  //path值作为key     //  /aaa/bbb:{ path:"/aaa/bbb" ,regex : //}}

pathMap值示例 

Vue Router中Matcher的初始化流程是什么

//记录name到RouteRecord的映射;  name值作为keyif (name) {    if (!nameMap[name]) {      nameMap[name] = record    } else if (process.env.NODE_ENV !== 'production' && !matchAs) {      warn(        false,        `Duplicate named routes definition: ` +          `{ name: "${name}", path: "${record.path}" }`      )    }  }

得到的这些map是为了路由匹配做了基础。

match()

作用是匹配一个路径并找到映射的组件。

执行过程

matched属性

在VueRouter中,所有的Route 最终都是通过 createRoute 函数创建,并且它最后是不可以被外部修改的。 Route对象中有一个重要属性 matched,它通过 formatMatch(record) 计算得到:

function formatMatch (record: ?RouteRecord): Array<RouteRecord> {  const res = []  while (record) {    res.unshift(record)    record = record.parent  }  return res}

record循环往上找parent,直到找到最外层。把所有的record都放到一个数组里面,它记录了一条线路上的所有record。matched属性为之后渲染组件提供了依据。

感谢各位的阅读,以上就是“Vue Router中Matcher的初始化流程是什么”的内容了,经过本文的学习后,相信大家对Vue Router中Matcher的初始化流程是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯