到今天,需要遵循优雅降级和渐进增强吗
今天看《JavaScript DOM编程艺术(第二版)》的时候,书中提到了“平稳退化”一词,于是网上查了一下。基本认为平稳退化就是“优雅降级”(Graceful Degradation),和渐进增强(Progressive Enhancement)是一对相对的概念。听起来好像很高大上,其实就是平时说的向上兼容和向下兼容,渐进增强相当于向上兼容,而优雅降级相当于向下兼容。
渐进增强:一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。
优雅降级:一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。
(这是常见前端面试题之一)
再看看segmentfault的Humphry对渐进增强和优雅降级的理解:
广义来说,其实要定义一个基准线,在此之上的增强叫做渐进增强,在此之下的兼容叫优雅降级。这个基准线对于我,是允许使用javascript、cookie和css的IE8浏览器。
不过狭义而言,渐进增强一般说的是使用CSS3技术,在不影响老浏览器的正常显示与使用情形下来增强体验,而优雅降级则是体现html标签的语义,以便在js/css的加载失败/被禁用时,也不影响用户的相应功能。
在《JavaScript DOM编程艺术(第二版)》中的“平稳退化”,作者描述是,如果正确地使用了JavaScript脚本,就可以让访问者在他们的浏览器不支持JavaScript的情况下仍能顺利地浏览你的网站,就是说,虽然某些功能无法使用,但最基本的操作仍能顺利完成。所谓“渐进增强”就是用一些额外的信息层去包裹原始数据。按照“渐进增强”原则创建出来的网页几乎(如果不是全部的话)都符合“平稳退化”原则。
写出不支持JavaScript的情况下仍能顺利地浏览的网页当然是好,有这个必要吗?
> 结论写在头
这是两个很好的原则,但不符合经济效益。
不需要兼容到不支持JavaScript这么极端的情况(特殊需要网站除外),但需要“渐进增强”和“优雅降级”的原则做一些基本的兼容。
提倡循序渐进应该是作者写第一版的时候(06年)的事情,现在好多网页已经放弃兼容IE6 7了,更不用说没有JavaScript,实际上现在大多的网页很难做到没有JS。
所以书中关于这个的观点,在我看来有点过时了。
尽信书,不如无书。
另外,不想让网页的搜索引擎的排名降低,两个原则还是需要考虑的,因为搜索机器人(searchbot)难以处理JavaScript语言。
> 看看主流网站在关闭了JavaScript后的样子
淘宝网:
禁用JS后,基本图片都加载不出来
新浪网:
首页效果还好,进到文章页后就不行了
谷歌(百度基本一样):
搜索页面没有太复杂交互,效果没太大差别
腾讯网:
首页和文章页效果都不错,还少了两侧的杂项新闻(感觉更清爽了)