最佳实践编辑

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

性能编辑

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

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

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

    • 如果是这样,您是否考虑过使用流式bfetch 服务

辅助功能编辑

您知道 Kibana 发表了关于我们致力于为残障人士创建无障碍产品的公开声明吗?我们确实发表了!我们所有的应用程序都必须是无障碍的,这一点非常重要。

本地化编辑

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

约定编辑

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

重复造轮子编辑

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

  • 数据服务

    • 搜索策略

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

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

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

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

向后兼容性编辑

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

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

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

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

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

路由、导航和 URL编辑

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

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

测试和稳定性编辑

审查