没有人完全错了。

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

在使用非 polyfillable 的新 web 功能方面,有两种截然相反的观点,我认为这两种观点在我们行业中都很常见。

  1. 网站不需要在每个浏览器中都看起来一样。渐进增强概念有助于解决这个问题。有一些工具,甚至原生语言功能,可以帮助实现这一点。
  2. 如果浏览器支持没有达到我的预期,它就只是演示的奇特装饰,不应使用。

我不确定我会说其中任何一个比另一个更正确或更不正确。

我也可以想象,我支持 #1 背后的想法并不令人意外。完全可以设计和实现不同浏览器和条件下行为不同的东西。这本质上就是响应式设计,而这几乎是现在的整个互联网。

渐进增强的核心是从一个在任何地方都能工作的基础开始,并在可能的情况下在基础上层叠设计和功能。甚至有原生语言功能来支持这一想法。@supports 规则允许我们编写 CSS 代码,如果支持某个功能,它可以执行某项操作,如果不支持,则可以执行另一项操作。

这是使用 Modernizr 的整个用例,它有 22,804 个星标。

我不想反驳渐进增强。请记住,我刚才说我支持这种想法。但我确实对那些选择不去使用渐进增强,最终发展出更多 #2 态度的人和团队抱有同情心。

开发和设计以不同方式工作的功能确实要多花一些精力。这可能是绝对值得做的工作。也可能不值得。无论哪种方式,它都会使事情复杂化。需要更多代码,需要更多关注和测试,而且推理难度更大。这是技术债务。

让我再次先发制人地进行防御性解释:技术债务是可以的,甚至是有意的。我们在构建的所有东西中都会产生技术债务。我的意思是,明智地对待技术债务,承担一个你能永远照管的合理的技术债务量,这一点很重要。

你可能会说,建立在渐进增强基础之上的,从某种意义上来说,更少的技术债务,因为你建立在如此坚实的基础之上,需要更少的测试和持续维护。也许吧!

我确实理解表现得像 #2。它感觉更安全。感觉你正在谨慎负责。你可能会想,“嘿,这很不错。”“我将在几年后重新审视它,看看是否可以真正使用它。”我可能会说 1) 这没有意思,2) 几乎违反直觉的是,这意味着你并不愿意采用渐进增强方法,这可能会使你的代码最终变得更脆弱。

我想这取决于具体情况。这取决于你到底想做什么。这取决于技术债务的规模。这取决于团队和开发人员流动率。这取决于文档。这取决于测试和 QA。

做你自己。