javascript的渐进增强?

时间:2009-09-01 03:39:19

标签: javascript progressive-enhancement

现在大多数人都在谈论渐进式增强功能,因为它使用javascript(增强版)提供浏览器,而浏览器则没有javascript(简单版本)。

但是浏览器之间的javascript性能存在很大差异,因此应用该术语来支持在浏览器之间选择基于javascript的功能可能很有用。

在具有众多非绝对必要功能(和动画)的复杂Web应用程序中,开始考虑将其封锁起来是值得的,因为这些功能集应该适用于所有浏览器,而这些功能集仅适用于Chrome和Safari,以及Firefox和Chrome以及Safari和Opera等等,因为在某些浏览器中启用某些功能会太慢。

有时我觉得如果用户体验无法访问某些非必要功能,他们的体验会有所改善。例如,禁止IE用户调整Chrome用户可以调整大小的某些面板的大小。

7 个答案:

答案 0 :(得分:1)

我自己没有这样做,但我可以看到,如果您的预算允许,那就很有意义了(而且您无法控制用户的浏览器选择)

在一天结束时,IE用户可能正在使用慢浏览器,但他们仍然是您的用户。因此,如果您希望为所有用户提供最佳的用户体验,那么花一些时间为IE用户提供不同版本的应用程序以提供更高级别的性能可能是值得的。

对于99%的用户而言,快速的应用程序无疑比仅为30%的用户快速的应用程序更好。唯一的问题是什么更重要 - 用户体验或您的开发时间(并考虑到在几年内,普通用户将在更快的计算机上运行更快的浏览器)

任何此类工作都应该由基准测试来驱动,因为我的经验是,你会经常对代码的哪一部分速度慢以及代码的哪一部分很快感到惊讶。

顺便说一下,Lombardi Blueprint有一个非常有趣的方法,尽管在GWT之外可能不切实际。它们具有用java编写的布局算法,这些算法可以在客户端(通过GWT)和服务器端(通过标准的jvm)运行。因此,基于浏览器的基准性能,他们能够在客户端(快速浏览器)上进行布局与在服务器端进行布局(对于速度较慢的浏览器)之间进行动态切换。

答案 1 :(得分:0)

这听起来像是一场维护噩梦。

我意识到有一些Web应用程序,只有没有html版本才有意义。也就是说,如果有可能我会首先构建每个页面的html版本,然后使用JavaScript来增强用户体验。

对于JS而言,IE的性能不如Safari,Chrome和FF - 但是你真的开发了一个在IE打开的情况下在IE中无法使用的页面吗?我只是没有看到它 - 在野外我认为各种JS实现足够快。

答案 2 :(得分:0)

目前浏览器存在两个不同的问题:

  1. 速度。我的经验是IE 7工作正常,比其他工作慢得多。我的修复是为用户提供更频繁的UI进度更新。由于UI更新需要时间,因此我将最快的浏览器上的更新最小化。例如,在IE上,我在处理另外50个事件后更新屏幕并提供更多反馈。对于其他浏览器,处理200个事件后。

  2. 缺乏功能。例如画布。但是建立多个站点需要付出很大的代价。并测试它们。因此,我将预算用于所有当前桌面浏览器的1个版本。并为移动esp iPhone制作其他网站。

  3. HTH,

    拉​​里

答案 3 :(得分:0)

我所做的是编写一个具有通用功能的基本javascript文件,转到最低分母(javascript 1.5)。然后我有更新版本的javascript的其他文件,这些将替换我的javascript对象中的函数,以便我可以逐步添加更多的支持。

如果我想使用canvas标签,那么我可以将它添加到另一个文件中,因为IE和Firefox / Opera / Safari在创建canvas元素方面有所不同。

这不是维护的乐趣,但如果我想使用新的html / javascript功能,那么这似乎是最好的模型。

答案 4 :(得分:0)

我同意安迪的观点。向不同的浏览器提供不同版本的应用程序是一个潜在的维护问题。我总是发现提供一个版本的应用程序是一个更好的选择,适用于所有浏览器。例如,我试图避免使用浏览器嗅探器。该应用程序可能不是最酷的应用程序,但它适用于所有人,并且更易于维护。

这种东西现在变得更容易了,所有漂亮的Javascript库都会抽象出一些浏览器差异。此外,你可以在旧浏览器中做很多事情。它刚刚完成“不同”;)

答案 5 :(得分:0)

因此,假设您构建了一个体积适中的应用程序。你有浏览器嗅探嘉宾来确定将要使用哪些功能以及将关闭哪些功能。你嗅到了Opera 9.x,现在(今天实际上)Opera 10出来了。你必须在每一页上更新每个嗅探器。然后很快又出现了另一个浏览器......还有另一个。您将花费所有时间,确定您支持的浏览器以及支持哪些功能。

我一天使用多个浏览器。因此,当我访问您的网站时,我将看到三种不同的界面。我会感到困惑,因为我期望在那里的功能,或我预期的行为将不会存在。最终,我会感到沮丧,再也不会再去你的网站了。

此外,还有更多的JavaScript运行速度,而不仅仅是浏览器。我还有一台运行Firefox 3.5的旧Pentium。有时,它可能会非常缓慢。

答案 6 :(得分:0)

我认为答案是您需要将代码分类为速度类别,而不仅仅是分类到浏览器功能。

换句话说,给你的网站层级功能,第一层是基本的html,第二层是javascript可用性改进,第三层是javascript动画眼睛糖果。

然后组合允许用户随时按下一层,“点击关闭动画!”,“点击打开动画!”,“点击查看基本html”,然后选择默认为基于浏览器的某些速度类别出于速度原因(例如,如果IE7似乎表明完整动画的速度问题,请将其默认为第二个“javascript可用性改进”层)。