渐进式增强是我在网络上做的所有事情的核心。它也是我说话和写作的基石。无论我写的是JavaScript、Ajax、HTML,还是服务工作者,总是通过渐进式增强的镜头。有时我会明确地发号施令,比如弹性网页设计(Resilient Web Design)。其他时候我根本不提它的名字,而只是谈论它的好处。
有时我会被要求列举一些即使在JavaScript失败的情况下仍然提供其核心功能的站点的示例。我通常会提到Amazon.com,尽管它还有其他问题。但我经常发现,我可能提到的很多例子都被认为不是“网络应用程序”(不管这是什么意思)而不屑一顾。
我得到的阻力通常是这样的:“嗯,这种方法对网站来说很好,但它不会像Gmail那样工作。”
一直都是Gmail。这很奇怪。因为如果你真的想用一款无视渐进式增强的产品或服务来迷惑我,比如说游戏之类的东西,我会很难做到的(尽管把一个逐步增强为第一人称射击游戏的文字冒险游戏打造成一款非常酷的游戏)。但是电子邮件客户端呢?那会行得通的。
用于显示电子邮件列表的HTML、用于显示HTML内容的HTML、用于编写回复的表单的HTML。
现在添加所有改善体验的增强功能-键盘快捷键;Ajax而不是整页刷新;本地存储等等。
你能在不使用任何JavaScript的情况下构建像Gmail一样工作的东西吗?不是的。但这不是渐进式增强的意义所在。它是用最简单的技术(HTML)提供核心功能(读写电子邮件),然后使用更强大的技术(如JavaScript)进行增强。
渐进式增强不是要在使用更简单、更健壮的技术或使用更高级的功能之间做出选择;它是关于使用更简单、更健壮的技术,然后使用更高级的功能。把你的蛋糕吃了吧。
幸运的是,我不再需要运行这个思维实验来想象如果使用渐进式增强方法构建像Gmail这样的东西会是什么样子。嘿就是这样。
嘿的UI是100%通过网络传输的HTML。我们在服务器上呈现纯HTML页面,并将它们以text/html格式编码发送到您的浏览器。没有JSONAPI,没有GraphQL,没有反应--只有表单提交和链接。
如果你认为这听起来像25年前的网络,那么你是对的!不同的是,“嘿”前端堆栈逐渐增强了“经典网络”,使其工作起来像“2020网络”一样,保真度达到了你期望从一个构建良好的SPA中获得的所有保真度。
看见?。它既不是有弹性的,也不是现代的--它是有弹性的,是现代的。把你的蛋糕吃了吧。
在过去的十年里,架构宇航员一直在向我们兜售Reaction、Redux和MB的JS的必要性,他们无法理解在2020年使用服务器呈现的HTML构建电子邮件应用程序的可能性。
嘿无论如何都不是十全十美的-他们在可访问性方面有很多工作要做。但是,对于“但是像Gmail这样的东西呢?”这个问题有一个很好的简短的回答是很好的。
当伊桑·马科特(Ethan Marcotte)展示响应式设计的力量时,它遭到了抵制。当然,响应性的设计可能适用于一个简单的个人网站,但它不可能扩展到一个大型的复杂的商业项目。
然后“波士顿环球报”推出了它的回应网站。微软使他们的主页具有响应性。闸门再次敞开。
今天的情况也差不多。“当然,渐进式增强可能适用于一个简单的个人网站,但它不可能扩展到一个大型的复杂网站项目。”
闸门已经准备好要打开了。我们只需要你创造一个有弹性的网页设计的海报孩子。
我想知道这是不是巧合或有关联,因为这项服务还解决了跟踪等道德问题?他们的关注点很大程度上是人,而不是技术。他们的产品采用了以人为中心的方法,Web开发采用了以人为中心的方法…。因为归根结底,这就是渐进式增强。