应用程序服务编辑

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。

mount 回调在用户导航到特定于应用程序的 URL 时被调用。

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

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

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