Skip to main content

后端系统命名模式

这些是后端系统必须遵守的命名模式,它们有助于我们在不同软件包中保持导出一致,并使我们更容易理解导出的用途和意图。

原则上,除了插件和模块 ID 应使用 kebab 大小写外,所有名称都应使用 camel 大小写。

插件

| 说明 | 模式 | 示例 | | ----------- | ----------------- | ------------------------------------- | | 输出 |<camelId>Plugin|catalogPlugin,userSettingsPlugin| | ID | |'<kebab-id>'|'catalog','user-settings'|

例如

export const userSettingsPlugin = createBackendPlugin({
pluginId: 'user-settings',
...
})

模块

| 说明 | 模式 | 示例 | | ----------- | ---------------------------- | ----------------------------------- | | 输出 |<pluginId>Module<ModuleId>|catalogModuleGithubEntityProvider| | ID | |'<module-id>'|'github-entity-provider'|

例如

export const catalogModuleGithubEntityProvider = createBackendModule({
pluginId: 'catalog',
moduleId: 'github-entity-provider',
...
})

扩展

| 描述 | 模式 | 示例 | | ----------- | -------------------------------- | -------------------------------------- | | 接口 |<PluginId><Name>ExtensionPoint|CatalogProcessingExtensionPoint| | 参考资料<pluginId><Name>ExtensionPoint|catalogProcessingExtensionPoint| | ID | |'<pluginId>.<name>'|'catalog.processing','foo.barBaz'|

例如

export interface CatalogProcessingExtensionPoint {
...
}

export const catalogProcessingExtensionPoint = createExtensionPoint<CatalogProcessingExtensionPoint>({
id: 'catalog.processing',
...
})

服务

| 描述 | 模式 | 示例 | | ----------- | ---------------------- | -------------------------------------------------- | | 接口 |<Name>Service|LoggerService,DatabaseService| | 参考资料<name>ServiceRef|loggerServiceRef,databaseServiceRef| | ID | |<pluginId>.<name>|'core.rootHttpRouter','catalog.catalogClient'| 工厂<name>ServiceFactory|loggerServiceFactory,databaseServiceFactory|

例如

export interface CatalogClientService {
...
}

export const catalogClientServiceRef = createServiceRef<CatalogClientService>({
id: 'catalog.catalogClient',
...
})

export const catalogClientServiceFactory = createServiceFactory({
service: catalogClientServiceRef,
...
})

对于核心应用程序接口中的所有核心服务,上述服务引用命名模式均有例外。@backstage/backend-plugin-api使所有核心服务引用都能通过单一的coreServices同样@backstage/backend-test-utils通过单个mockServices这意味着上表稍有误导,因为loggerServiceRefdatabaseServiceRef则作为coreServices.loggercoreService.database我们建议插件避免使用这种模式,除非它们有非常多的服务需要导出。

虽然根作用域服务的前缀通常以Root例如RootHttpRouterServiceRootLifecycleServiceConfigService而它是一个根范围服务。