用于微前端下的应用间的路由跳转,提供路守卫能力,在路由变化时触发相应hook,帮助用户更加精确的控制路由变化,灵活地支持各类业务场景。
路由是微前端中重要且复杂的模块。在微前端应用下,子应用既可作为独立应用运行在自己的路由系统下,又可作为子应用嵌入在主应用下加载,为了实现两种模式的无缝切换,Garfish 实现了一套路由机制保证用户在这两种模式中平滑过渡,你可以在 Garfish 路由机制 中了解详细设计。
在阅读下面 API 介绍之前,你需要了解和保证一些配置规范。
provider 中的 render 函数拿到的 basename = 主应用的 basename + activeWhen;provider 中 render 函数接收到的 basename 设置为子应用的 basename,如何配置;Garfish.routerGarfish.router 是 Garfish 实例上的属性,由 Garfish 路由系统提供。该属性上提供应用间路由跳转的方法、路由导航守卫钩子函数以及路由相关配置信息。其类型定义如下:
路由导航方法。
要跳转的路由,string,必选。
设置跳转的基础路由,string,非必选。
路由携带的查询参数,Record<string, string>,非必选。
Garfish.router.push() 方法默认会携带上全局 basename 作为跳转前缀,若使用框架自身路由进行跳转,请记得主动添加basename 跳转前缀。下面两种跳转方式等价:Garfish.router.push() 方法跳转将触发子应用子路由视图更新。另外若关闭 autoRefreshApp 选项,则将只能使用 Garfish.router 进行跳转子应用子路由,但子应用一级路由仍将可使用框架路由跳转。
由于目前主流框架并不是通过监听路由变化来触发组件的更新的。在跳转子应用子路由时,若直接使用 history.pushState 将不会触发对应路由的组件更新,请使用 Garfish.router 提供的方法进行跳转。
路由导航方法。
要跳转的路由,string,必选。
设置跳转的基础路由,string,非必选。
路由携带的查询参数,Record<string, string>,非必选。
Garfish.router.replace() 方法与 Garfish.router.push() 方法类似,唯一的区别是:它不会向 history 添加新记录,而是跟替换掉当前的 history 记录;to :即将要进入的目标路由信息。
from :即将离开的路由信息。
next :阻塞执行回调。
to :即将要进入的目标路由信息。
from :即将离开的路由信息。
next :阻塞执行回调。
location.pathname。请注意:
Garfish.router.beforeEach、Garfish.router.afterEach 和 Garfish.router.routerChange 均属于 Garfish 提供的路由守卫钩子,将在每次在路由变化后触发。Garfish.router.beforeEach、Garfish.router.afterEach 和 Garfish.router.routerChange 是全局唯一的,如果设置多次,那么只有最后执行的是有效的。对它们的使用应该需要一定的约定,避免多次注册导致互相覆盖。Garfish.run 前执行,否则将无法接收到首次加载时的路由钩子;Garfish.router.beforeEach 将在子应用加载前触发,Garfish.router.afterEach 将在子应用加载后触发。此时路由均已发生变化;next 函数可为异步函数,微前端渲染流程将被阻塞直至 next 函数被 resolve。next 函数被执行,否则将导致 Garfish 内部子应用渲染逻辑被阻塞;next 函数调用的影响;