Skip to content

微前端如何无刷新跳转?

  • 基于 URL 路径匹配的路由分发(最主流的方式)
    • 注意不能使用window.location.href
    • 就是主应用劫持url路径,然后匹配到对应的子应用即可。
      • 微前端框架会劫持、代理、重写浏览器的的路由和方法。

追问

  • 在你的微前端方案中,子应用自己的路由系统是如何配置的?(考察 basename 的配置)

    • 每个子应用都有自己的前缀。然后在主应用中,每个子应用的路径都不一样,当输入路径的时候,会直接匹配到对应的子应用。
    • basename的作用是跳转时自动带上前缀和跳转后在url上面自动忽略前缀。
      • 所以你在url跳转的时候不需要带上前缀,跳转后也看不见前缀
  • 当浏览器的“后退”按钮被点击时,整个流程是怎样的?(考察对 popstate 事件监听的理解)

    • 会自动取出之前的url记录来url地址栏,然后”监听“全局的popstate,执行倒退。
    • 对于代码发起的跳转,调用了被劫持的pushState
    • 但是浏览器回退是浏览器的行为,只能监听这个事件
  • 如果两个子应用都使用了 react-router-dom v6,它们各自的 history 实例会冲突吗?你的架构是如何隔离的?(考察对沙箱隔离机制的理解)

    • 不会,有沙箱。用Proxy来代理window对象。
  • 在主应用切换子应用时,如何处理上一个子应用还未完成的 API 请求?(考察对请求中断、应用生命周期管理的深入思考)

    • 悬空请求,切换子应用的时候要主动卸载。
  • 如果一个 URL 没有匹配到任何子应用,404 页面应该由主应用还是子应用来展示?为什么?(考察架构设计和职责划分的思考)

本站访客数 人次 本站总访问量