有关Web开发中渐进增强的大讨论
| 2013-09-15 22:14
最近,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
作者 Dilip Krishnan ,译者 李彬
译文:http://www.infoq.com/cn/news/2013/09/progressive-enhancement-debate