路由服务
技术名称:路由器
依赖项:无
路由器服务提供三个功能:
有关当前路线的信息
应用程序根据其状态更新url的方法
侦听每个哈希更改,并通知应用程序的其余部分
API
current
可以使用当前密钥访问当前路由。它是一个具有以下信息的对象:
pathname(字符串):当前位置的路径(/web)
search(object):一个字典,将每个搜索关键字(querystring)从url映射到其值。如果没有明确给定值,则为空字符串
hash(object):与上面相同,但适用于hash中描述的值。
实例:
// url = /web?debug=assets#action=123&owl&menu_id=174
const { pathname, search, hash } = env.services.router.current;
console.log(pathname); // /web
console.log(search); // { debug="assets" }
console.log(hash); // { action:123, owl: "", menu_id: 174 }
使用pushState方法更新URL:
pushState(hash: object[, replace?: boolean])
参数
hash(Object())–包含从某些键到某些值的映射的对象
replace(boolean())–如果为true,则url将被替换,否则将只更新哈希中的键/值对。
使用哈希对象中的每个键/值对更新URL。如果一个值被设置为空字符串,则该键将被添加到url中,而没有任何相应的值。
如果为true,replace参数告诉路由器应该完全替换url散列(因此散列对象中不存在的值将被删除)。
此方法调用不会重新加载页面。它也不会触发hashchange事件,也不会在主总线中触发ROUTE_CHANGE。这是因为此方法仅用于更新url。调用此方法的代码有责任确保屏幕也得到更新。
实例:
// url = /web#action_id=123
routerService.pushState({ menu_id: 321 });
// url is now /web#action_id=123&menu_id=321
routerService.pushState({ yipyip: "" }, replace: true);
// url is now /web#yipyip
最后,重定向方法将浏览器重定向到指定的url:
redirect(url[, wait])
参数
url(string())–有效的url
wait(boolean())–如果为true,请等待服务器准备就绪,然后重定向
将浏览器重定向到url。此方法将重新加载页面。wait参数很少使用:它在某些情况下很有用,因为我们知道服务器将在短时间内不可用,通常是在插件更新或安装操作之后。
注意:
只要当前路由发生更改,路由器服务就会在主总线上发出ROUTE_CHANGE事件。