Skip to main content

前端系统架构

**注意:新的前台系统处于alpha阶段,只有少数插件支持。

积木

本节将介绍这一新系统所依赖的高级构建模块,其中大部分概念也存在于我们当前的系统中,不过在某些情况下,你需要眯起眼睛才能发现它们的相似之处。

无论您是建立自己的Backstage实例、开发插件,还是为插件扩展新功能,了解这些概念都非常重要。

下图概述了不同的构建模块,以及它们之间相互影响的其他模块。

frontend system building blocks diagram

App

这是您创建的应用程序实例本身,用作 Backstage 前端应用程序的根。 它本身没有任何直接功能,只是负责将各种功能连接在一起。

扩展

扩展是构建应用程序可视化和非可视化结构的构件。 既有应用程序本身提供的内置扩展,也有插件提供的扩展。 每个扩展都连接到与其共享数据的父扩展,并可拥有任意数量的子扩展。 应用程序可将所有扩展连接到称为应用程序扩展树的单个树中。 整个应用程序就是在这个结构中实例化和呈现的。

插件

插件提供应用程序内部的实际功能。 插件的大小可以从一个很小的组件到一个全新的系统,其他插件可以在其中组成和集成。 插件可以是完全独立的,也可以建立在彼此之上,以扩展现有插件并增强其功能。 插件可以通过组成其扩展或共享实用程序编程接口和路由来相互通信。

扩展覆盖

除了内置扩展和插件提供的扩展外,还可以安装扩展覆盖。 这是一组具有较高优先级的扩展,可以替代现有扩展。 例如,它们可以用来覆盖插件提供的单个扩展,或安装全新的扩展,如新的应用程序主题。

实用程序编程接口

实用程序应用程序接口提供的功能使构建插件变得更容易,使插件与其他插件共享功能成为可能,同时也是集成商改变应用程序行为的自定义点。 每个实用程序应用程序接口都由一个 TypeScript 接口和一个用于访问实现的引用来定义。 实用程序应用程序接口的实现由提供的扩展来定义,可以像其他扩展一样被重载。

路线

Backstage路由系统增加了一层间接性,使插件之间可以相互路由到对方的扩展,而无需明确知道扩展在什么 URL 路径上呈现,或者它们是否存在。 它使插件之间可以共享路由,并在运行时动态生成具体的链接。 应用程序有责任将这些链接解析为实际的 URL,但集成商也可以定义自己的路由绑定,以决定如何解析链接。 路由系统还允许插件定义内部路由,帮助链接到同一插件中的不同内容。

包裹结构

TODO