O with occluded right edge to appear also as a C Web Widget 指南 文档 Toggle darkmode

深入: 路由驱动

Web Router 是一个技术栈中立的路由系统,Web Widget 能够与 Web Router 组合完成单页微前端架构:

            Start
              ▼
     ┌────────┴───────┐
     │ Backend Router │
     └────────┬───────┘
              ▼
       ┌──────┴─────┐
       │ Web Router │ 
       └──────┬─────┘
              ▼
  ┌───────────┴───────────┐
  │ Application Container │
  │      (Web Widget)     │
  └───────────┬───────────┘
              ▼
┌─────────────┴──────────────┐
│ Front-End Framework Router │
│ (React, Vue, Angular, ...) │
└─────────────┬──────────────┘
              ▼
       ┌──────┴──────┐
       │ Application │
       └──────┬──────┘
              ▼
             End

使用

<web-router>
  <web-route path="/" element="web-widget" import="@examples/home"></web-route>
  <web-route path="/news" element="web-widget" import="@examples/news"></web-route>
  <web-route path="*" element="web-widget" import="@examples/404"></web-route>
</web-router>

Web Router 还在发展中,这是 RFC 地址:https://github.com/growing-web/rfcs/discussions/10

最佳实践

我应该有一个父/根应用程序和子应用程序吗?

不可以。强烈建议 root 只用来管理路由,而不使用任何 UI 库(React、Vue 等),更不包括导航、侧边栏等 UI 部分。

为什么?你最终创建的结构具有微服务的所有缺点,但没有任何优点:这相当于将独立的单页应用开发变成了插件开发的模式,每一个单页面应用都将依赖宿主提供的接口才能完整运行,例如点亮导航等,整个工程将耦合在一起。好的微服务应当是完全独立的,而这种模式将会破坏这一点。

子路由应当如何管理?

你应当确保每个单页应用都可以独立运行,因此子路由也应当由具体的单页应用管理,例如使用 vue-router 等。