最佳实践

编辑

无论您是直接在 Kibana 代码库中开发代码,还是构建自己的插件,都请考虑以下最佳实践。它们旨在支持我们的 Kibana 开发原则

性能

编辑

您在规划时是否考虑了可扩展性?

  • 考虑具有许多字段的数据
  • 考虑具有高基数字段的数据
  • 考虑跨越长时间范围的大型数据集
  • 您是否在浏览器中加载最少的 JS 代码?

  • 您是否向服务器发出大量请求?

可访问性

编辑

您是否知道 Kibana 公开发表了我们致力于为残疾人士创建可访问产品的声明?我们确实做到了!我们所有应用程序都具有可访问性非常重要。

本地化

编辑

Kibana 被翻译成其他语言。使用我们的 i18n 实用程序来确保您的面向公众的字符串将被翻译,以确保所有 Kibana 应用程序都已本地化。

约定

编辑
  • 熟悉我们的 样式指南(使用 Typescript!)
  • 平台上编写所有新代码,并遵循 约定
  • 始终使用 SavedObjectClient 来读取和写入已保存的对象。
  • 向您的所有插件和服务添加 `README`。
  • 使您的公共 API 尽可能小。您将必须维护它们,并在对其进行任何更改时考虑向后兼容性。
  • 使用 EUI 来获取所有基本 UI 组件,以创建一致的 UI 体验。

重复发明轮子

编辑

过度重构本身可能是一个问题,但了解现有的服务并在适当的时候使用它们仍然很重要。我们有专门面向服务的团队,致力于为我们的解决方案开发人员提供更快迭代所需的工具。他们会处理繁琐的细节,因此您可以专注于针对您特定问题领域的创造性解决方案。以下是一些您应该考虑的常见服务示例

  • 数据服务

    • 搜索策略

      • 使用 esSearchStrategy 向 ES 发出原始查询,该查询将支持异步搜索和部分结果,以及注入正确的 高级设置,例如是否包含冻结的索引。
  • 可嵌入对象

    • 在您的应用程序中渲染地图、可视化效果和仪表板
    • 注册可以添加到仪表板或 Canvas 工作区或在其他插件中渲染的新小部件。
  • UiActions

    • 让其他插件将功能注入您的应用程序
    • 将自定义功能注入其他插件
  • 无状态助手实用程序
  • 状态同步
  • 状态容器 实用程序由
  • kibana_utils 提供,如果您想将应用程序状态同步到 URL?

重用这些服务将有助于在每个解决方案的 Kibana 中创建一致的体验。

向后兼容性

编辑

最终,我们希望向我们的插件开发人员保证他们的插件不会因小的版本更新而中断。

每当您创建或更改公共 API 时,请记住这一点,并考虑潜在的向后兼容性问题。虽然我们有一个正式的已保存对象迁移系统,并且正在努力添加一个正式的状态迁移系统,但在次要版本中引入状态更改和迁移始终存在风险。在进行次要版本中的巨大和有风险的更改(尤其是对于已保存的对象)之前,请考虑这一点。

  • 您是否从注册表中持久化状态?考虑如果实现作者更改了他们的接口会发生什么。
  • 您是否向注册表添加实现?考虑到有人可能正在持久化您的数据,并且更改您的公共接口可能会破坏他们的代码。

更改已保存的对象或可持久化数据的形状时要非常小心。

从过去的 Kibana 版本导出的已保存对象应继续工作。此外,如果用户依赖于作为您的公共合约一部分存储在您应用程序 URL 中的状态,请记住您可能还需要为书签 URL 提供向后兼容性。

路由、导航和 URL

编辑

Kibana 平台提供了一组工具来帮助开发人员围绕路由和浏览器导航构建一致的体验。其中一些工具在 core 中,一些工具作为各种插件的一部分可用。

请遵循本指南,以了解可用的工具和处理路由和浏览器导航的常见方法。

测试和稳定性

编辑

审查