应用程序服务

编辑

Kibana 已迁移成为单页应用程序。插件应使用 应用程序服务 API 来指示 Kibana,当用户交互时,应在 UI 中加载并渲染应用程序。该服务还提供了用于控制导航链接状态、无缝集成应用程序之间的路由以及按需加载异步块的实用程序。

应用程序服务仅在客户端可用。

import { AppMountParameters, CoreSetup, Plugin, DEFAULT_APP_CATEGORIES } from '@kbn/core/public';

export class MyPlugin implements Plugin {
  public setup(core: CoreSetup) {
    core.application.register({ 
      category: DEFAULT_APP_CATEGORIES.kibana,
      id: 'my-plugin',
      title: 'my plugin title',
      euiIconType: '/path/to/some.svg',
      order: 100,
      appRoute: '/app/my_plugin', 
      async mount(params: AppMountParameters) { 
        // Load application bundle
        const { renderApp } = await import('./application');
        // Get start services
        const [coreStart, depsStart] = await core.getStartServices(); 
        // Render the application
        return renderApp(coreStart, depsStart, params); 
      },
    });
  }
}

请参考 application.register 接口

应用程序特定的 URL。

当用户导航到应用程序特定的 URL 时,会调用 mount 回调。

core.getStartServices 方法提供了在 start 生命周期期间可用的 API。

mount 方法必须返回一个函数,该函数将在 Kibana 卸载应用程序时被调用以卸载应用程序。您可以在此处放置清理逻辑。

您可以自由使用任何 UI 库在 DOM 中渲染插件应用程序。但是,我们建议您使用 React 和 EUI 来创建一致的 UI 体验,以构建所有基本 UI 组件。