24

Jeff 在谈到使用 JQuery 编写 stackoverflow 时提到了“渐进增强”的概念。

在快速谷歌之后,我发现了一些关于它的高级讨论。

任何人都可以推荐一个开始作为程序员的好地方。

具体来说,我一直在用 PHP 编写 Web 应用程序,并希望使用 YUI 来改进我正在编写的页面,但其中很多似乎都非常基于 JavaScript,大部分工作都是使用 JavaScript 完成的。对我来说,这似乎有点矫枉过正,因为在没有 Javascript 的情况下查看该网站可能会破坏大部分内容。

任何人都有一些开始使用这个想法的好地方,我并不关心语言。

理想情况下,我想看看您是如何首先开始创建静态 HTML,然后将 YUI(或任何 Ajax 框架)添加到其中以便获得更丰富的客户端的好处?

4

8 回答 8

14

正如你所说

对我来说,这似乎有点矫枉过正,因为在没有 Javascript 的情况下查看该网站可能会破坏大部分内容。

这不是渐进式增强。渐进增强是当网站在没有 JavaScript 或 CSS 的情况下完美运行,然后添加(分层)这些额外的技术/代码以增加网站的可用性和功能。

我能给出的最好的例子就是这个网站上的标签输入框。关闭 JavaScript 后,它仍然可以让您输入以空格分隔的标签。打开 JavaScript 后,您会看到一个下拉列表,其中包含以前条目的建议。

这是渐进式增强。

于 2008-08-05T15:51:11.873 回答
10

另请参阅Unobtrusive JavaScript,它是构建渐进增强的基石。

于 2008-08-05T16:05:29.020 回答
4

我在NETTUTS写了一篇关于创建使用渐进增强的投票的教程。这个想法是使用 XHTML/CSS 和 PHP 创建一个功能性网站,然后使用 JavaScript 拦截表单等。(我使用了 jQuery)。

于 2008-08-05T15:55:59.553 回答
3

从另一个方向着手有时被称为优雅降级。当站点首先使用各种技术提供的增强功能构建时,通常需要这样做,然后对其进行修改以优雅地降级以适应那些技术不可用的浏览器。

当设计与旧浏览器(互联网术语中的古老术语)一起工作时,它也是优雅的降级,例如 IE 5.5、Netscape 等......

在我看来,优雅地降级应用程序需要做更多的工作。逐步增强它往往会更有效率;但是,有时需要使用现有的应用程序并使其在这些缺乏的环境中可访问。

于 2008-08-05T15:57:00.113 回答
3

基本上,如果您的站点在关闭 JavaScript 的情况下仍然可以工作,那么您使用 JavaScript 添加的任何内容都可以视为渐进增强。

有些人可能认为这是不必要的,但很多人使用 NoScript 之类的插件进行浏览(或者,在他们的浏览器设置中简单地关闭 JavaScript)。此外,许多移动网络浏览器可能支持也可能不支持 JavaScript。因此,使用和不使用 JavaScript 完全测试您的网站始终是一个好主意。

于 2008-08-05T17:20:25.077 回答
3

渐进增强是一种开发技术,它强调语义 HTML 的首要地位,然后测试浏览器功能并有条件地对 JavaScript 和/或 CSS 增强进行“分层”,以便为可以利用这些增强的浏览器提供支持。

关键之一是了解我们正在测试浏览器可以做什么,而不是浏览器嗅探Modernizr是一个非常流行的浏览器功能测试套件。

渐进增强本质上是可访问的(第 508 节);它规定符合法律条文规则精神。

The Filament Group wrote the excellent "Designing With Progressive Enhancement" book on the subject. (I am not affiliated with Filament Group, though they are so freaking smart I wish I were.)

于 2012-10-23T13:56:54.387 回答
2

这是一个如此重要的概念,令我感到难过的是,很少有 Web 开发人员理解它。

基本上,首先用普通的旧 HTML 构建站点/框架——结构元素、链接和表单。然后添加一些风格,然后添加闪亮的东西(Ajax 或你有什么)。

这不是很困难。就像苍白马说的,优雅的退化是更多的工作。

网站应该在任何用户代理中工作,看起来不一样(如果你的视力受损,甚至看起来不一样,但听起来),只是工作。

于 2008-09-19T04:37:17.223 回答
2

渐进增强:

  1. 纯 HTML/CSS 网站非常棒(功能齐全且用户友好)。
  2. 添加 JavaScript 定义了一个新的水平。
于 2010-07-21T17:22:11.343 回答