更新我们的前缀政策
在为 Web 实现新功能时,尽早让开发者接触并尝试新功能对我们而言非常重要。(当然,这也有助于我们发现并修复错误!)过去,浏览器通过使用供应商前缀名称来为功能实现此目的。这是为了保护 Web 免受规范和实现变更带来的波动。浏览器最终会实现没有前缀的标准版本,并放弃对带有前缀版本的支持。
随着时间的推移,这一策略效果并不理想。许多网站开始依赖带有前缀的属性。它们经常使用功能的每种带有前缀的变体,这使得 CSS 更难维护,JavaScript 程序也更难编写。网站经常只使用功能的带有前缀的版本,这使得浏览器在添加对不带前缀的标准版本的支持时,很难放弃对带有前缀变体的支持。最终,出于兼容性考虑,浏览器感受到了实现彼此前缀的压力。
浏览器实现者目前的共识是,总的来说,带有前缀的属性弊大于利。因此,WebKit 的新政策是实现没有前缀的实验性功能,并隐藏在运行时标志后。运行时标志使我们能够继续将实验性功能提供给开发者,同时避免供应商前缀带来的各种问题。运行时标志也让我们更容易在稳定版本和预览版本(例如Safari Technology Preview)之间设置不同的默认设置。
我们将把更新后的政策应用于今后的新功能开发工作。运行时标志在 WebKit trunk 上(以及在 nightly builds 中)是否应开启取决于功能的成熟度,包括其规范的稳定性和实现的成熟度。
这对 Web 开发者意味着什么?
最初,开发者不应该注意到任何不同。从长远来看,我们希望这一变化能让您更容易尝试即将推出的功能。一如既往,我们鼓励您尝试正在开发中的功能。非常欢迎对实验性功能的反馈和错误报告。
目前带有前缀的功能呢?
我们将逐案评估现有功能。我们预计随着时间推移会显著减少支持的前缀属性数量,但 Web 兼容性要求我们保留某些功能的带前缀版本。
我们欢迎来自 Web 开发者、教育工作者以及在其他浏览器引擎上工作的同事对新政策提出评论和反馈。请随时通过 Twitter (@hober)、Jon Davis (@jonathandavis)、@webkit 与我联系,或直接给我发送电子邮件:hober@apple.com。