在使用非 polyfillable 的新 web 功能方面,有两种截然相反的观点,我认为这两种观点在我们行业中都很常见。
- 网站不需要在每个浏览器中都看起来一样。渐进增强概念有助于解决这个问题。有一些工具,甚至原生语言功能,可以帮助实现这一点。
- 如果浏览器支持没有达到我的预期,它就只是演示的奇特装饰,不应使用。
我不确定我会说其中任何一个比另一个更正确或更不正确。
我也可以想象,我支持 #1 背后的想法并不令人意外。完全可以设计和实现不同浏览器和条件下行为不同的东西。这本质上就是响应式设计,而这几乎是现在的整个互联网。
渐进增强的核心是从一个在任何地方都能工作的基础开始,并在可能的情况下在基础上层叠设计和功能。甚至有原生语言功能来支持这一想法。@supports
规则允许我们编写 CSS 代码,如果支持某个功能,它可以执行某项操作,如果不支持,则可以执行另一项操作。
这是使用 Modernizr 的整个用例,它有 22,804 个星标。
我不想反驳渐进增强。请记住,我刚才说我支持这种想法。但我确实对那些选择不去使用渐进增强,最终发展出更多 #2 态度的人和团队抱有同情心。
开发和设计以不同方式工作的功能确实要多花一些精力。这可能是绝对值得做的工作。也可能不值得。无论哪种方式,它都会使事情复杂化。需要更多代码,需要更多关注和测试,而且推理难度更大。这是技术债务。
让我再次先发制人地进行防御性解释:技术债务是可以的,甚至是有意的。我们在构建的所有东西中都会产生技术债务。我的意思是,明智地对待技术债务,承担一个你能永远照管的合理的技术债务量,这一点很重要。
你可能会说,建立在渐进增强基础之上的,从某种意义上来说,更少的技术债务,因为你建立在如此坚实的基础之上,需要更少的测试和持续维护。也许吧!
我确实理解表现得像 #2。它感觉更安全。感觉你正在谨慎负责。你可能会想,“嘿,这很不错。”“我将在几年后重新审视它,看看是否可以真正使用它。”我可能会说 1) 这没有意思,2) 几乎违反直觉的是,这意味着你并不愿意采用渐进增强方法,这可能会使你的代码最终变得更脆弱。
我想这取决于具体情况。这取决于你到底想做什么。这取决于技术债务的规模。这取决于团队和开发人员流动率。这取决于文档。这取决于测试和 QA。
做你自己。
没错!
“浏览器支持没有达到我的预期”
说实话,大多数情况下,我们谈论的是 Internet Explorer 和他的表亲 Edge。
我认为,我们作为 web 开发人员不仅有自由,而且有义务使用这些不支持 IE 的功能。
精心执行的 UX 设计的一项主要原则是可预测性,满足用户的期望并使其体验与他们的期望一致。
对于使用 Internet Explorer 的用户来说,布局扭曲和功能损坏是互联网浏览的一部分。优雅降级可能会导致混淆,甚至会对你的 IE 用户造成令人不快、令人痛苦的体验。
不要助长他们的痛苦。使用这些新功能。破坏 IE。这是你的道德责任。
(除非你的客户明确要求并支付 IE 支持的费用。)
我认为,如果你认为有一种方法总是正确的,并将其应用于你做的所有项目,那么你就已经做错了。
我仍然难以理解为什么有些客户和设计师不理解网站在不同的响应状态(手机、小型平板电脑、大型平板电脑、台式电脑)中会呈现不同的外观。
我不想讨论网站在不同浏览器中会呈现不同的外观。他们无法做到这一点,这让他们觉得我无法解决一些浏览器的不足。
有些战斗要打,有些战斗不要打。这场战斗我将推迟到它可以获胜的时候再打。