应用服务

编辑

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 体验。