什么是渐进增强?

时间:2008-08-05 15:44:39

标签: ajax progressive-enhancement

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

快速推出谷歌后,我发现了几个关于它的高层讨论。

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

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

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

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

8 个答案:

答案 0 :(得分:14)

正如你所说

  

对我而言,这看起来有点矫枉过正,因为在没有Javascript的情况下查看网站可能会破坏其中的大部分内容。

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

我能给出的最好的例子是本网站上的标签输入框。关闭JavaScript后,它仍然可以让您输入用空格分隔的标签。启用JavaScript后,您会看到以前条目的建议下拉。

这是渐进式增强。

答案 1 :(得分:10)

另见Unobtrusive Javascript这是基础渐进增强的基础。

答案 2 :(得分:4)

我在tutorial创建了一项使用渐进式增强功能的民意调查时写了NETTUTS。我们的想法是使用XHTML / CSS和PHP创建一个功能站点,然后使用Javascript拦截表单等。 (我使用了JQuery)。

答案 3 :(得分:3)

基本上,如果您的网站仍然可以关闭JavaScript,那么您使用JavaScript添加的任何内容都可以被视为渐进式增强。

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

答案 4 :(得分:3)

从另一个方向走向它有时被称为优雅退化。当首先构建站点时,通常需要使用各种技术提供的增强功能,然后修改这些功能,以便在没有这些技术的浏览器中优雅地降级。

在设计使用旧版浏览器(Internets术语中很古老)时,例如IE 5.5,Netscape等,也是优雅的降级......

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

答案 5 :(得分:3)

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

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

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

Filament Group撰写了关于这一主题的优秀“Designing With Progressive Enhancement”书。 (我与Filament Group没有任何关系,虽然他们非常聪明,我希望我是。)

答案 6 :(得分:2)

这是一个非常重要的概念,令我感到很难过的是,很少有网站开发人员理解它。

基本上,首先在Plain Old HTML中构建一个站点/框架 - 结构元素,链接和表单。然后添加一些样式然后闪亮的东西(Ajax或你有什么)。

这不是很困难。就像palehorse所说的那样,优雅的退化是更多的工作。

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

答案 7 :(得分:2)

渐进式增强:

  1. 简单的HTML / CSS网站非常棒(完全正常且用户友好)。
  2. 添加JavaScript定义了一个令人敬畏的新水平。