匹配优先级:有时候,同一个路径可以匹配多个路由,此时,匹配的优先级就按照路由的定义顺序:谁先定义的,谁的优先级就最高。也就是添加新的路由的时候,是往后面添加。对于*路由,代码做了特殊的处理。大部分人对*的认识是一个后备路由,也就是别的路由都匹配不上的时候,使用*对应的路由。源码src下面的create-route-map.js文件的第29-35行就是专门把*路由放到最后面的:// ensure wildcard routes are always at the end
for (let i = 0, l = pathList.length; i < l; i++) {
if (pathList[i] === '*') {
pathList.push(pathList.splice(i, 1)[0])
l--
i--
}
}综上,添加路由的时候按照路由定义的顺序添加路由,最后把*路由换到最后面。