有关渐进增强的大讨论

阅读数:516 2013 年 9 月 13 日

话题:RESTJavaScript语言 & 开发架构

最近,ember.js 的创造者之一Tom Dale撰写的文章,重新点燃了酝酿已久的关于对渐进增强需求的争论:

几天前,Daniel Mallz 在 tumblr 上发布了一篇博客文章,题为:对 JavaScript 的一声叹息。[……] 这篇博客文章旨在刁难那些“不合群”的人——在这里,指的是那些在 JavaScript 遭到禁用的情况下无法正常工作的网站。

不过,我了解到一些不好的消息说:“渐进增强已死,少年。它已经成为过去。最起码对大部分 Web 开发者来说是这样的。”

“数年前,在 Web 浏览器领域发生了一些事情。不知道大家是否曾留意它们,但至少我没有,”他说,“浏览器从精彩的交互式文档查阅器,转变为全世界最先进、分布最广泛的应用运行时环境。”那么,渐进增强到底是什么呢?维基百科这样描述它:

渐进增强是一种 Web 设计策略,它强调可访问性、语义化 HTML 标记、外部样式表和脚本技术。渐进增强以分层的方式运用 Web 技术,从而让使用任何浏览器或互联网接入方式的任何人,都能够访问 Web 页面的基础内容和功能;同时也面向使用更高级浏览器软件或更大带宽的用户,提供页面的增强版本。

随着浏览器厂家不断尝试创新和差异化,Web 应用的表现能力和用户体验得到了持续提升。作为提供这些响应式应用的平台,浏览器的普遍可用性是令人信服的。

在争论的另一端,是Nicholas Zakas等人——他的演讲解释了让应用如此依赖 JavaScript 需要付出的代价;除了常见问题,针对与现代“SPA”应用中 JavaScript 过“重”有关的问题,他也在演讲中提供了分析和洞察,而且还给出了一些关于如何提供优雅地回退选项的建议。

从另一个角度看待这场争论的话,实际上我们今天所了解的 Web,已经因为特定的架构特性得到了扩展。Stefan Tilkov在 QCon 上的一场演讲中,探讨了对 JavaScript 的需求是如何不引人注目。他建议应用拥抱 Web 及其架构特性,并将这种架构当作面向资源的客户端架构来参考。

ROCA 尝试着定义一套推荐——独立于任何特定框架、编程语言或工具——它将体现我们认为有利于 Web 应用架构的那些原则。其目的在于作为一种参考,可以原样实现,或是与其他方法进行对比,以突出显示不同的设计决策。

那些 JavaScript 优先的应用,将会打破我们所熟知的 Web。Jake Archibald是一位提倡 Google Chrome 的开发者,他认为主要改变的特性将涉及分享、链接和导航;就此而言,拥有一个可以被 Google、Bing 等搜索引擎搜索的 Web 站点,将依赖应用的这些属性。不过,并非所有应用都满足这些要求,例如基于浏览器的游戏、视频播放器等等就是例外。但他坚持认为,渐进增强依旧重要。

Tom Dale 承认,在现代 JavaScript 应用中使用多种技术,有可能实现这些特性;但这一切应该永远是被实用主义所推动的。

如果从一开始就选择 JavaScript,我们将能够更快构建带有 UI 的应用——在以往这是不可能的。[……] 当然,总会存在一些场景,使用由服务器上呈现的 HTML 会更加合适。但是我们需要分析,目标用户群中,有多大比重的用户不能使用 JavaScript,以及我们想要提供什么样的用户体验,并据此做出决定。

查看英文原文:The Big Progressive Enhancement Debate