MDN浏览器兼容性数据项目(BCD)核心数据规范指南
前言
作为前端开发者,我们经常需要查询各种Web技术在不同浏览器中的兼容性情况。MDN浏览器兼容性数据项目(BCD)正是为此而生,它通过结构化数据为开发者提供准确的浏览器支持信息。本文将深入解析BCD项目的数据规范体系,帮助开发者理解如何正确记录和维护浏览器兼容性数据。
版本号记录规范
基本原则
在记录浏览器版本号时,BCD遵循以下核心原则:
-
记录主/次版本线:只记录主版本号或次版本号,不记录补丁版本号。例如:
- Chrome 76.0.3809.46 → 记录为76
- Safari 10.1.3 → 记录为10.1
-
最早适用版本原则:记录功能首次支持的完整发布版本线,而非特定构建版本。
特殊情况处理
-
回溯发布版本:某些浏览器存在非线性的版本发布历史,需特别注意:
- Safari 6.1 → 记录为7.0
- Safari 7.1 → 记录为8.0
- 但NodeJS例外,因其有独特的发布周期
-
iOS Safari版本:使用iOS系统版本号而非Safari或WebKit版本号
-
预览版标记:当稳定版版本号未知时使用"preview"值:
- 功能仅在Canary/Technology Preview中可用
- 不确定功能是否会进入稳定版
- 但不要用于"计划支持但未实现"的情况
实现状态标记规范
部分实现标记
当功能实现不完整时,使用"partial_implementation": true
并附加说明:
- 识别但功能不全:浏览器能识别API但行为不符合预期
- 跨平台限制:功能仅在某些操作系统上可用
- 例外:依赖操作系统硬件支持的功能(如CSS媒体查询)
实验性标记
experimental
属性的设置规则:
| 情况 | 设置值 | |------|--------| | 单引擎支持 | true | | 多引擎支持 | false | | 仅标志支持 | true | | 不兼容前缀 | true | | 共同前缀 | false |
过期规则:单引擎功能支持满2年且无重大变更可设为false
废弃标记
deprecated
设为true的条件:
- 规范中明确标记为废弃/遗留
- 已从规范中移除
- 标准组织正式声明废弃
- 浏览器控制台显示废弃警告
注意:仅因老旧或不流行不足以标记为废弃
数据清理规范
功能移除标准
符合以下任一条件的功能可移除:
- 从未在任何浏览器中实现
- 最新稳定版中无标志支持
- 已从所有浏览器移除超过2年
- 过去5年所有版本均不支持
标志数据移除
标志数据在以下情况可移除:
- 功能已在稳定版默认支持
- 标志已无法启用该功能
- 标志已从浏览器移除
无浏览器支持的功能
同时满足以下条件的功能不应添加:
- 未在任何稳定版中实现
- 当前无标志支持
- 无实现意向的跟踪bug
API参数支持记录规范
记录函数参数支持情况的命名约定:
-
命名参数:
paramname_parameter
,描述为`paramname` parameter
- 示例:
hello(firstName)
→firstName_parameter
- 示例:
-
位置参数:
ordinal_parameter
,描述为Ordinal parameter
- 示例:
count()
的第二个参数 →second_parameter
- 示例:
-
参数对象属性:
paramname_prop_parameter
,描述为`paramname.prop` parameter
- 示例:
schedule({year:1970})
→date_year_parameter
- 示例:
特殊类别规范
Web扩展特性
Web扩展特性不包含状态块(status block),因为:
- 无规范约束
- 完全由浏览器厂商自主实现
最佳实践建议
- 版本号记录:始终追踪功能的首次稳定支持版本线
- 部分实现:详细记录不完整实现的具体表现
- 状态标记:定期审查实验性和废弃状态
- 数据清理:每季度检查是否符合移除标准
- 参数支持:使用标准命名格式确保一致性
通过遵循这些规范,我们可以确保BCD数据保持准确、一致且易于维护,为开发者提供可靠的浏览器兼容性参考。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考