后端系统命名模式
这些是后端系统必须遵守的命名模式,它们有助于我们在不同软件包中保持导出一致,并使我们更容易理解导出的用途和意图。
原则上,除了插件和模块 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
这意味着上表稍有误导,因为loggerServiceRef
和databaseServiceRef
则作为coreServices.logger
和coreService.database
我们建议插件避免使用这种模式,除非它们有非常多的服务需要导出。
虽然根作用域服务的前缀通常以Root
例如RootHttpRouterService
和RootLifecycleService
但ConfigService
而它是一个根范围服务。