加载中

最佳实践

无论您是直接为 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 提供向后兼容性。

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

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

复习

© . All rights reserved.