向后兼容性

历史上,WordPress以保持跨版本的向后兼容性而闻名。古腾堡在其生产公共API中尽可能遵循此示例。在极少数情况下,破坏向后兼容性是不可避免的,在这种情况下,会出现破坏:

  • 应尽可能限制在API的较小表面积内。
  • 应使用Dev Notes尽可能清晰地记录给第三方开发人员。

什么是生产公共API

古腾堡代码库由两种不同类型的包组成:

  • 生产包:这些是作为WordPress脚本提供的包(例如:wp-components、wp-editor…)。
  • 开发包:这些是由开发人员工具组成的,第三方开发人员可以使用这些工具对主题和插件进行lint、测试、格式化和构建(例如:@wordpress/scrips、@wordpress/env…)。通常,这些在第三方项目中作为npm依赖项使用。

向后兼容性保证仅适用于生产包,因为更新是通过WordPress升级进行的。

生产包使用水处理全局变量,为第三方开发人员提供API。这些API可以是JavaScript函数、变量和React组件。

如何保持JavaScript函数的向后兼容性

  • 函数的名称不应更改。
  • 函数参数的顺序不应更改。
  • 函数的返回值类型不应更改。
  • 如果我们保证所有以前的调用仍然可能,则可以更改参数(新参数、语义修改)。

如何保持React组件的向后兼容性

  • 组件的名称不应更改。
  • 不应拆除组件的支柱。
  • 应继续支持现有属性值。如果一个组件接受一个函数作为道具,我们可以更新该组件以接受同一道具的新类型,但它不应该破坏现有的用法。
  • 允许添加新道具。
  • 只有在我们确保之前的上下文契约没有中断的情况下,才能添加或删除React上下文依赖项。

如何保持块的向后兼容性

  • 加载编辑器时,块的现有用法不应中断或标记为无效。
  • 应保证现有砌块的样式。
  • 标记更改应限制在尽可能小的范围内,但如果块需要更改其保存的标记,使以前的版本无效不推荐的版本应该添加块的。

类名和DOM更新

React组件树中使用的类名和DOM节点不被视为公共API的一部分,可以修改。

对这些代码的更改应该谨慎进行,因为它可能会影响第三方代码的样式和行为(即使它们首先不应该依赖这些代码)。如果可能,保留旧的。如果没有,请记录更改并编写开发说明。

折旧

随着项目的发展,发现了现有API的缺陷,或者需要更新以支持新功能。当这种情况发生时,我们试图保证现有的API不会破坏并构建新的替代API。

为了鼓励第三方开发人员采用新的API,我们可以使用已弃用每当使用旧的API时,显示一条解释弃用的消息并提出替代方案。

当该功能被弃用时,请更加明确。使用自从插件helper方法的选项。

例子:

已弃用(“wp.components.ClipboardButton”{自:'10.3',插件:“古腾堡”,替代项:“wp.compose.useCopyToClipboard”,} );

开发说明

开发人员备注如下在make/core网站上发布的帖子在WordPress发布之前,向第三方开发人员通知开发人员API的重要更改,这些更改可以包括:

  • 新API。
  • 对现有API的更改可能会影响现有插件和主题。(例如:类名更改…)
  • 不可避免的向后兼容性破坏,带有推理和迁移流。
  • 重要的弃用(即使没有中断),以及推理和迁移流。

开发注释工作流

  • 当处理拉请求时,发现需要开发注释,请添加需要开发说明标记到PR。
  • 如果可能,在公关中添加注释,解释为什么需要开发说明。
  • 当即将发布的WordPress版本的第一个测试版发布时,查看该版本中包含的合并PR列表,这些PR标记为需要开发说明标签。
  • 对于这些PR中的每一个,写一个开发说明,并与WordPress发布负责人协调发布开发说明。
  • 发布PR的开发说明后,删除需要开发说明来自PR的标签。