面向所有人的网络:与网络从业者访谈 - Belén Albeza

在跨浏览器兼容性系列的第三次访谈中,我们与 Belén Albeza (@ladybenko) 进行交谈。Belén 是一位工程师和游戏开发者,她在 Mozilla 从事开发者关系工作。她是关于网络开发的几本书的作者,包括“使用 Grunt 增强您的前端开发”和“XHTML + CSS ¡de una maldita vez!”。她经常在会议上发表关于游戏开发、Web API 等主题的演讲。下周,她将在 柏林的 View Source 2016 上发表演讲!她也经常为 Mozilla Hacks 贡献文章

到目前为止,我们已经从两位优秀的网络开发者那里了解到他们如何在工作流程中(以及为什么)将网络兼容性集成在一起。两周前,Rachel Andrew 说,““我一直认为网络是为所有人而设计的。” 上周,Chris Coyier 说,一个简单的经济现实激励他制作跨浏览器兼容的网站:“人们为对他们有用的网站付费。”

是什么激励 Belén 让网络为所有人工作?继续阅读以找出答案。


Belén Albeza

Belén,跨浏览器兼容性对你来说意味着什么?

这意味着拥有一个在不同浏览器中功能性 - 不一定是相同 - 的网站或网络应用程序。

你必须多久考虑一次跨浏览器兼容性?你是否找到了减少思考时间的方法,与你经验不足的时候相比?

你必须一直考虑到这一点。然而,这很困难,因为在同一个系统下进行 90% 的开发是很自然的。唯一的捷径是使用网络标准,这样你就知道你的代码很有可能在其他浏览器和系统中正常运行,但直到有人在真实的浏览器和设备上尝试过,你永远无法确定。

唯一的捷径是使用网络标准,这样你就知道你的代码很有可能在其他浏览器中正常运行。

是什么激励你付出额外努力来构建跨浏览器兼容的网站?

从我的角度来看,跨浏览器兼容性不是一个很好的附加功能:它是必须的。你无法承受你的产品在主要浏览器(或操作系统)之一中无法正常运行。因此,我不认为它是“额外努力”,我认为它是“强制性努力”。

有什么可以让你放弃这种努力吗?是什么?

跨浏览器兼容性不是一个二进制开关,要么有要么没有 - 这是一个频谱。我认为让产品在主要浏览器(Chrome、Firefox、Edge、Safari、Android 浏览器)和主要操作系统(Windows、Mac、iOS、Android)中正常运行是强制性的。除此之外,除非是客户要求 - 比如对旧系统/浏览器的遗留支持 - 我认为确保你的代码符合 Web 标准是一个很好的理智点。大多数时候,你没有资源在每个浏览器、每个系统、每个设备上进行测试。

还存在需要你的产品核心的特定功能的问题,例如 WebRTC、Websockets 或 Web Audio。在这种情况下,你是在有意识地做出决定,要么排除没有实现或部分实现的浏览器。

你是否曾经不得不让客户或老板相信构建跨浏览器兼容的网站很重要?你是怎么做的?

到目前为止,我的经验通常是相反的:客户或产品负责人希望支持尽可能多的浏览器和系统!我不得不让他们放弃对过时浏览器的支持,这样我们的代码库才能更加现代化和精简。

你是否曾经有过特定的经历导致你在下一个项目中更加重视跨浏览器兼容性?

在我之前的一份工作中,我们正在开发一个网络应用程序,我们同时使用 Firefox 和 Chrome 进行开发。但这些是浏览器的常规版本。我们构建了应用程序的候选发布版本,并为自己鼓掌… 只是第二天发现 QA 团队在我们的网络应用程序中发现了一个非常严重的错误!怎么会这样?

好吧,事实证明,在我们提交候选发布版本进行 QA 的第二天,一个新的浏览器版本发布了,它修复了我们之前使用的一种变通方案。而这种不再需要的变通方案导致了一个错误!从那天起,我们将 ChromeFirefox 的夜间构建版本添加到我们的开发工具堆栈中,这样我们就知道未来会发生什么!

您将在今年 9 月的柏林 View Source 上发表演讲。您的主题是,“你可能不需要 CSS 框架。” 您认为框架会让跨浏览器兼容性变得更好还是更糟?是否有任何框架在兼容性方面特别出色?

我认为框架创建者在跨浏览器兼容性方面负有巨大责任。如果一个框架只支持部分主要浏览器,而且不知何故它变得非常流行……网络就会完蛋。总的来说,我的建议是避免使用第三方框架,除非是在非常特殊的情况下(比如开发原型)。

您在 HTML5 游戏方面做了不少工作。HTML5 游戏开发者面临哪些特殊的兼容性挑战?您在阻止/调试 HTML5 游戏中的兼容性问题时是否使用了一套不同的工具?

这在很多方面都很具有挑战性:性能在不同浏览器、不同设备之间存在差异……还有一些需要注意的怪癖:例如,不同的浏览器支持不同的音频文件格式,一些移动浏览器需要用户交互才能播放声音,等等。但你在创建原生游戏时也会遇到类似的问题,因为并非所有设备都相同,性能也不同,并且拥有不同的硬件功能!

在开发商业游戏时,通常会有一个 QA 阶段,在这个阶段,游戏会在不同的设备和操作系统上进行测试 - 你只需将不同的浏览器也添加进去。现在我自己制作游戏时,我会选择一个以良好的跨浏览器兼容性而闻名的游戏框架 (Phaser),并在家里我拥有的几台设备上测试游戏。

你会告诉从编码训练营毕业的新开发者关于跨浏览器兼容性的哪些信息?

这不是一个选择,而是必须的。你无法承受失去 50%、40% 或 30% 的潜在受众。你必须关心!而且 caniuse.com 非常有用 ;)

你无法承受失去 50%、40% 或 30% 的潜在受众。你必须关心!


来自 Belén 访谈的建议

  • 跨浏览器兼容性并不意味着在每个浏览器中都让东西看起来相同 - 它只是意味着让它们对所有人可用。
  • 构建跨浏览器兼容网站的唯一捷径是坚持标准。
  • 记得在浏览器的夜间版本上测试你的网站或应用程序,这些版本包含即将在发布渠道中发布的功能。

关于 Justin Crawford

Justin Crawford 是 Mozilla 的产品工程师,负责开发者营销和增长。他喜欢思考未来、构建事物和骑自行车。

更多 Justin Crawford 的文章…