在最近的文章中,我们解释了为什么让网络为每个人服务很重要。我们与多位顶尖网页开发者探讨了他们是如何做到的。此外,我们还展示了浏览器制造商如何通过采用动态标准来提升兼容性。今天,我们将展示个人如何显著提升工具空间,从而帮助让网络为每个人服务。
2015 年,我们询问了 MDN 访客在处理跨浏览器兼容性问题时最常使用哪些工具。四分之三的受访者提到了 **优质参考材料**。65% 的受访者表示他们使用MDN 作为跨浏览器兼容性参考,64% 的受访者表示他们使用caniuse.com。没有其他参考网站能够比拟。
与 MDN 一样,caniuse.com 是一个拥有数百位贡献者的开源项目。任何人都可以派生和 PR caniuse 数据,或将其用于新的工具(示例)。在这个领域构建新工具很重要且很有价值:超过 25% 的开发者表示他们希望使自己的网站更加兼容,但由于需要更强大的工具(例如,自动化和代码检查)而未能做到。
帮助网页开发者是Alexis Deveria(又名@Fyrd)的动力,他是 caniuse.com 的开发者。白天,Alexis 是一名 Adobe 的网页开发者;晚上,他是跨浏览器兼容性的倡导者。他暂时放下阅读最新浏览器深奥知识,与我们谈论了兼容性。
是什么促使你创建了一个专门用于浏览器兼容性的网站?是否有特定的经历引发了这一想法?是什么驱使你一直坚持下去?
我在 2008 年创建了这个网站,因为当时各种网页浏览器开始实施许多有趣的新技术,尤其是在 HTML5 和 CSS3 方面。但是,跨浏览器的支持参差不齐,似乎没有一个中央位置可以查找跨浏览器支持。所以我创建了一个页面,列出了大约 10 到 15 个这样的功能。随着页面逐渐流行起来,我开始添加更多内容,使其更具交互性,直到它逐渐发展成为今天你所看到的成熟的浏览器兼容性网站。
我坚持下去的动力源于几方面:首先是它的流行度:如今有这么多人访问并依赖它,放弃它会让人感到不负责任。它也是我最成功、持续时间最长的项目,我对此感到非常自豪。其次,它迫使我与网页技术发展保持同步,这有利于我的日常工作。最后,它也有一些广告收入,这总是有帮助的。
Caniuse 包含Statcounter 或 Google Analytics 统计数据,以帮助用户确定有多少潜在用户可以使用特定功能。你认为大多数开发者是否会基于这样的市场公式做出技术决策?你认为开发者在做出决策时,对市场上多少比例的功能采用率感到满意?
是的,我认为许多开发者会参考使用率来决定是否可以使用特定功能,但我想这与所涉及的多种因素息息相关,例如,它是哪种功能,拥有该功能有多重要,是否可以使用垫片等。我猜大多数开发者并不对所有功能都设定特定的截止比例,但我还没有听说过任何相关情况。
你是否听说过开发者使用 Caniuse 来帮助说服他们的老板或利益相关者采取特定的技术方向?
是的,我听说过一些这样的案例。当然,这很棒,尤其是在他们能够开始使用原本不确定是否能使用的功能时。
除了功能潜在市场规模之外,你认为开发者在决定是否使用特定功能时还应该考虑哪些其他因素?
关注部分支持和有缺陷的支持很重要……虽然通常情况下,错误不是阻碍因素,但了解潜在陷阱始终很重要。还有一些情况是,功能可能会被弃用并最终从浏览器中删除,尤其是在专有技术和未获得广泛跨浏览器采用的功能方面。值得庆幸的是,这种情况很少发生,但仍然值得关注。
如果你能神奇地让网页平台上的一个功能在所有浏览器和设备上实现 100% 兼容,你会选择哪个功能?
哇,只能选一个吗?如果我们只谈论现代浏览器,我会选择CSS 网格布局。布局一直是网页开发中最令人头疼的问题之一,我认为如果能实现 100% 跨浏览器支持,那将是绝妙的事情。如果我还能对旧版浏览器施加魔法,那将会是Flexbox,原因相同。值得庆幸的是,在现代浏览器中,它已经看起来相当不错了。
Caniuse 是开发者构建跨浏览器兼容网站时工具包中的重要组成部分。你认为每个网页开发者还应该考虑使用哪些其他工具或技术来帮助他们构建兼容的网站?
使用BrowserStack 或Sauce Labs 等服务在旧版和移动浏览器上轻松测试非常有用,尽管需要付费订阅。我还建议熟悉每个浏览器的开发工具。它们都很棒,但需要花些时间才能了解如何在每个浏览器中进行相同类型的调试。此外,在使用新技术时,务必在 Caniuse 之外进行研究。跨浏览器支持仍然可能存在一些问题,因此请阅读 MDN,搜索相关主题的博文等。
浏览器兼容性仍然是网页开发中最大的挑战之一——非常困难!你认为新的工具可以解决这个问题吗?工具会做什么?
如果有一个集成了所有渲染引擎的浏览器,开发者可以在其中轻松地在不同引擎之间切换以测试他们的网站,那将非常棒。尤其是如果它包括移动浏览器和旧版本……但我无法想象这除了幻想之外还能是什么,因此像 BrowserStack 这样的工具很可能是我们能接近这种目标的最佳选择。
更理想的情况是,也许更现实的情况是,如果浏览器制造商能够花更多时间协作编写测试并确保技术的可靠支持,那么某些类型的跨浏览器问题一开始就不会出现。
你对从编程训练营毕业的新开发者关于跨浏览器兼容性的建议是什么?
它可能很丑陋、混乱且复杂。不要对哪些功能可以跨浏览器使用做出任何假设,直到你熟悉它为止。好消息是,对于许多基本功能而言,跨浏览器兼容性比以前好多了。再加上如今的开发者工具状态,我们有许多值得感谢的东西。
来自 Alexis 访谈的建议
- 如果你发现工具方面存在差距,那么你可能并非唯一有此感受的人。考虑构建或贡献工具来帮助推进网页开发实践,并让网络变得对每个人都更好。
- 不要假设新功能可以跨浏览器使用。在公开网站上使用之前,请阅读相关信息并进行试验。
- 在尝试了解新的网页功能时,请广泛搜索信息:在 caniuse.com 和 MDN 上查找内容,并关注其他来源(例如,博客)的信息。
关于 Justin Crawford
Justin Crawford 是 Mozilla 的产品工程师,负责开发者营销和增长。他喜欢思考未来、构建事物和骑自行车。