VueRouter实现
我们知道,路由控制有两种方式: hashURL和HTML5的historyAPI.(这部分看文档mdn就成)
我们当前的实现使用的是hash路由
挑战1: 使用vue对router功能基本实现
1 | <template> |
在大多数spa页面中,每一个页面就是一个组件,这就是为什么组件的语法是is
1 | <component :is='url'></component> |
挑战2: 使用
1 | <template> |
挑战3: 使用制作路由表(挖个坑, 这里要重新用render函数实现一次)
1 | <template> |
正则路由与动态路由
动态路由: 动态路由指的是路由中包含变量。
例如: /user/:username
这里的:username就是一个变量, 指的是我们在router 中放入的string,例如: /user/paserdark
想象一下,动态路由和静态路由之间的区别是什么?就是url不一样,仅此而已。相比与之前的静态路由,动态路由的url包含了更多信息而已。我们要做的只是从url拿出信息,然后就是遵循静态路由的操作步骤。
对url的处理, 在node.js中, 有个工具模块就是专门处理query字符串的。功能是解析url, 拿出url中的信息。
解析url的库:path-to-regexp
使用方法:
先定义url的基本模式
处理输入url
获取格式化对象
1
2
3
4
5
6
7
8
9
10const pathToRegexp = require('./path-to-regexp')
const path = '/bar/123'
const keys = []
const regx = pathToRegexp('/:type/:id?', keys)
const result = regx.exec(path)// ['/bar/123', 'bar', '123'....]
挑战: 编写动态路由解析
1 | <template> |