jQuery 核心:1.9 版本及更高版本
在得出错误结论之前,请查看 后续文章。
正如上一篇博文中所讨论的,jQuery 1.8 版本正在进行春季大扫除,以删除不安全、效率低下、无效和不可取的功能。我们还开始进行一些工作,使您能够构建自定义版本,这些版本会排除库中的某些部分,以实现更大的节省。这些努力将使您能够享受所需的 jQuery API,而无需携带您不想要的部分。
现在我们已经打扫了房屋,是时候展望未来了。只有一件事阻碍了我们对未来的展望,那就是过去浏览器的幽灵。Internet Explorer 6、7 和 8(统称为 oldIE)在过去十年中一直是 Web 开发人员的眼中钉。总的来说,这些过时的浏览器仍然占一些网站访问者的一半。这是一个庞大的用户群体——他们仍然想要网站提供的各种信息、服务和产品。对于使用 jQuery 的许多网站而言,忽略这些受众并不现实或有利可图。
jQuery 的构想是为了专门解决浏览器之间的差异,因此我们不会放弃我们理念的精髓,也不会仅仅无视数百万仍然使用 oldIE 的活跃 Internet 用户(无论出于何种原因)。然而,我们也希望继续前进,并利用现代浏览器,尤其是不断增长的移动市场。
未来的道路
jQuery 1.8 应该会在一个月内发布。以下是我们对接下来的两个 jQuery 版本以及发布时间的思考。
- jQuery 1.9(2013 年初):我们将删除 1.8 版本中已弃用的许多接口;其中一些将作为插件或 jQuery 项目支持的替代 API 提供。
- jQuery 1.9.x(2013 年及以后持续):此版本将继续修复任何回归、新的浏览器错误等。
- jQuery 2.0(2013 年初,紧随 1.9 版本之后):此版本将支持与 jQuery 1.9 相同的 API,但会删除对 IE 6/7/8 奇特功能的支持,例如有问题的事件模型、IE7 “属性”、HTML5 shim 等。
我们的目标是让 1.9 和 2.0 在它们支持的 API 集方面可以互换。当 2.0 发布时,您应该简单地根据以下条件决定选择哪个版本:如果您需要 IE 6/7/8 支持,请选择 1.9;否则,您可以使用 1.9 或 2.0。
问答
如果 jQuery 1.9 和 2.0 基本上是相同的 API,那么 2.0 的吸引力在哪里? 更小的尺寸、更好的性能以及不再需要支持 oldIE 而带来的问题。例如,我们预计可以在 2.0 中改进 $.Deferred 实现中的错误处理,而在支持 oldIE 的情况下则无法做到这一点。
我的网站仍然有许多 IE7/8 访问者,但我希望使用 jQuery 2.0。我该怎么做? 如果您的网站需要 oldIE 支持(我们预计大多数网站在至少未来一两年内都需要),您可以使用 IE 条件注释,仅在访问者使用 oldIE 时包含 1.9 版本。
<!--[if lt IE 9]> <script src="jquery-1.9.0.js"></script> <![endif]--> <!--[if gte IE 9]><!--> <script src="jquery-2.0.0.js"></script> <!--<![endif]-->
为什么不为 jQuery 2.0 创建一个“oldIE 插件”? 在 jQuery 的各个部分都对 oldIE 做了特殊处理。重构代码以提供足够的挂钩,以便将 oldIE 支持作为插件添加,将使现代浏览器情况下的代码变得更加复杂。此外,支持 oldIE 并使用公共 CDN 的开发人员还需要包含两个文件(jQuery 2.0 和 oldIE 插件),而不是一个文件。
jQuery 2.0 发布后,1.9 会怎样? 与以往不同,我们将继续修复 1.9 中的错误(作为次要版本)。我们刚刚为 1.8 和 1.9 完成了春季大扫除,因此我们预计在未来不会添加很多新的 API。相反,我们更倾向于通过与两个版本兼容的插件来添加新功能,前提是这种做法有意义。因此,如果您使用 1.9 版本,不要觉得您落伍了。
jQuery 2.0 基本上是针对移动设备的吗? 否。虽然 jQuery 2.0 非常适合 HTML 移动应用程序(包括使用 jQuery Mobile 编写的应用程序),但它不是一个仅针对 iOS 和 Android 的 Webkit 库。除了移动浏览器之外,2.0 还支持(并经过测试!)Internet Explorer、Opera、Firefox、Safari 和 Chrome 的现代桌面版本。
jQuery 2.0 会小多少/快多少? 我们只有在完成或接近完成时才知道。您可以放心,我们会随着 2.0 的发布日期临近而告知您更多信息。更好的是,您可以在发布测试版时尝试一下,亲身体验!
放弃对旧版 IE 的支持是一个明智的决定。现在,更容易向客户解释为什么我们的代理机构不再支持旧版 IE。因为这是在浪费时间。
PS:我期待着这个快速的新核心 :)
jQuery 团队似乎现在正在推动他们为之奋斗的标准,并让其他公司停止这样做。
我理解放弃对 IE6 甚至 IE7 的支持,但为什么要放弃 IE8?IE8 仍然占浏览器市场的 10%,而且需要的 hack 数量是 IE6 和 IE7 的一半。在我看来,放弃 IE8 为时过早。
这是一件好事。我已经完全放弃了对 6 和 7 的支持,而且我很少花时间处理 8。我只是确保网站能够正常运行,并且大部分看起来正常,然后就结束了。到明年,IE8 的使用率会进一步下降。但即使 IE8 的使用率仍然很高,也无关紧要。那些说因为拥有庞大的 IE8 用户群而无法使用 jQuery 2.0 的人,方法错了。您不应该开发需要任何 JavaScript 的网站。以渐进式增强为目标构建网站。IE6-8 用户仍然应该看到一个在禁用 JavaScript 后也能完全正常工作的网站。那些使用现代浏览器的用户会看到一个带有所有炫酷功能的漂亮网站。我构建的所有网站都没有 JavaScript,然后如果需要,我会使用 jQuery 添加额外的东西。在我看来,这就是应该做的事情。
好消息!再见 IE6!
感谢您有胆量放弃对糟糕浏览器的支持。尽管如此,您仍然会通过 1.9 版本来支持它们一段时间,因此即使仍然生活在 2000 年的开发人员实际上也不会落伍。
@TedWood
1) IE8 的代码库可能与 IE6/7 有很多相似之处,但它的 bug 少得多,功能也多得多。绝大多数针对 IE6/7/8 的特殊情况仅适用于 IE6,大多数其他情况仅适用于 IE7。与之相比,IE8 实际上已经相当不错了。在无需支持 IE6/7 的情况下支持它实际上是一个相当温和的概念。
2) 我不是在寻找要添加的新的“功能”;我寻找的是对 IE8 的持续支持——也就是说,我可以使用 jQuery 并知道如果发现问题,就会得到修复,我就可以使用该修复。我关注的不是 1.9/2.0 过渡期;我关注的是之后的 2.1 版本。除非他们计划在 2.1 版本发布后继续支持 1.9 版本,否则对于许多人来说将是一个大问题。
3) 我正在查看当前的浏览器统计数据,您是正确的:IE8 的使用率正在下降。然而,它还远远没有达到可以放弃支持的程度,并且在未来几年内也不太可能达到这个程度。
@Andrew
我打开了我的分析工具。IE(总计)在我的大多数开发网站中占用户群的 12% 左右。
所以本质上,它可以跳着跑……
“如果你依靠 jQuery 来解决浏览器问题,那么要么你正在处理一些边缘案例项目,要么我建议你使用其他方法来解决这些问题。”
真的吗?这似乎很奇怪,因为 jQuery.com 上三个主要的卖点之一是“跨浏览器”。另外两个是“轻量级占用空间”(好吧……)和“css3 兼容”。
来吧。消除跨浏览器问题是大多数人开始使用 jQuery 的主要原因。我需要 jQuery 来帮我把“querySelectorAll”包装成“$”吗?我认为如果只关心内置选择引擎的浏览器,我可以自己处理这段代码。如果每个浏览器都返回“innerWidth”的相同值,那我为什么还需要 jQuery 的方法呢?
jQuery 的价值不仅仅是一堆用于移动节点的方法,或者一堆在其他库中很容易获得的实用方法。这很好,但只有在我们可以确定它在任何地方都能正常工作的情况下才重要。这是重点。
我认为这方面的争论大部分是语义和猜测。一个可能有助于且不会偏离你当前计划的建议是,只更改版本的命名约定和打包方式。你已经谈到了能够“自己动手”创建仅包含所需部分的 jQuery 版本。不要做 1.9 和 2.0 版本,只需让人们能够选择是否包含兼容性层即可。当它们具有相同的 API 时,为什么要有两种不同版本的混乱?
我认为只使用相同的版本号,但添加一个字母设计器来表示它是旧 IE 兼容的,版本 1.9 或 1.9c,会更简单。当你打包自己的 jQuery 设置时,你也可以选择包中的常规组件或 c 组件。
也许我错了,但我认为这将减少版本方面的混乱和不确定性,并有助于将重点放在旧 IE 兼容组件上。
我个人迫不及待地想让旧 IE 消失,我甚至正在考虑在我的页面上添加链接来升级旧 IE 的用户。希望只要轻轻地敦促一下,我们就能让更多用户离开 IE6/7/8。我不在乎他们使用什么浏览器,只要不是那些。
我也来说两句。我爱 jQuery!但真正酷的是,只需要一个小的存根,它可以执行基本的 Ajax,并检测代码中是否引用了 jQuery 的某个部分,然后懒加载它。这样,你真的只得到你需要的部分,它们也保留在浏览器的缓存中。此外,你可以始终选择常规加载所需部分,或者通过引用任何你想要的插件来使用它。
正如已经提到的,JS 库之所以存在,是因为跨浏览器问题。所以只需要有人编写一个 jQueryQuery 元库来为你处理条件注释即可。一个脚本标签,就像以前一样,它会根据浏览器注入正确的 jQuery 版本。;)
如果/当其他库效仿时会很有趣,因为区别将在于库实际提供的功能。这始终是一个区别,但它从未像它们处理浏览器问题的程度和效率那样重要。
免责声明:我的企业客户主要是 IE。IE7/8 和一些 9。我必须确保所有网站在这 3 个浏览器上都 100% 兼容。
我不理解那些说现在就完全放弃 jQuery 的人,因为 jQuery 2.0 至少要一年后才会发布,它将不再支持 IE。
你到底在开发什么,你必须在每次新版本发布后立即升级 jQuery 版本?我认为没有大量 jQuery 代码的项目不需要这样。
在对网站进行 QA 测试并发布后,我们通常会“冻结”网站,因为更新 jQuery 版本可能会引入错误。我们的网站运行在 jQuery 1.4+ 上,运行得很好。请注意,jQuery UI 甚至支持 jQuery 1.3.x。
我很有可能在它发布后使用没有条件语句的 jQuery 1.9。我认为在很多年内,我们不会有迫切需要切换到 2.0 的情况。在这段时间内,最糟糕的情况是使用条件语句。
VICTOLY
放弃旧 IE 支持,不要退缩
终于,我已经做了 10 多年的网页设计(信不信由你),这应该是在那个完全烂东西的棺材上钉上的一颗大钉子。
对于那些“我还是支持 IE6 因为我的曾祖母还在用它”的人,你们在这个行业里没有立足之地,现在就离开吧。
我们在一年以前放弃了对 IE6 的支持。我们在 6 个月以前放弃了 50% 网站对 IE7 的支持。我们将在本月内完全放弃对 IE7 的支持。IE8?这还需要一段时间,它与 jQuery 团队的时间安排非常吻合。如果 1.9 在明年发布,我们将使用条件语句来选择相应的库。只要 1.9 持续得到支持,并与 2.0 保持同步,这将可能需要一年时间,那么这对我们来说就很合适。
如果它比这更早被放弃,或者如果 1.9/2.0 不同步,那么我们将在那时冻结 jQuery。
很好。
这会导致一些工作和困难,但与 IE 在过去 10 年中造成的麻烦和困难相比,这些并不算什么。
真可惜,如果世界上三分之一的网站一夜之间无法访问 IE 用户,微软可能在一周或两周内发布针对 IE 问题的真正修复程序。
正如现在的情况,他们将继续拖延到 2022 年,只做足够的努力来避免起诉,而不是做足够的努力让世界认为,标准可以在没有微软完全批准的情况下制定,或者需要花费数百万工时进行 20 年的艰苦奋斗才能制定。
尽管今天看起来可能很糟糕,但从更大的角度来看,这对微软来说可能是一个双赢的局面。
如果你放弃对 IE8 的支持,你将失去所有仍然使用 XP 桌面的企业用户。因此,大多数开发将在未来几年继续使用 1.x 版本。
我的观点是,你应该至少支持 IE8 直到 XP 结束使用,然后放弃对它的支持。
所有使用 jQuery 的政府网站怎么办?政府部门通常比平时更长时间地坚持使用旧版本的浏览器。你可以说这没关系,因为用户和公众不太可能受到相同的限制,但这是假设你没有一个需要在公共办公室中演示的网站,该网站提供公共办公室/服务。
例如,图书馆(地方政府的一部分),如果他们在他们的网站上使用 jQuery,并且在旧浏览器上安装了公共计算机,他们可能不得不使用旧版本的 jQuery(这样它才能与那些公共计算机一起使用)。
中国怎么办,那里 35% 的人还在使用 IE6?
条件注释在 IE10 中将不存在,因此文章中提出的解决方案将无法正常工作,因为 IE10 不会加载 jQuery 文件。
我大力支持这一举措。通过支持旧的和过时的浏览器,你实际上是在让自己停留在过去。通过在 2.0 版本中放弃对它们的兼容性,我们终于可以向前迈进,并针对当前和最新的技术进行优化。
向后兼容是有意义的,但仅限于一定程度。随着时间的推移,我们必须向前发展才能保持竞争力。对于十年前的 Internet Explorer 6,这个时刻已经到来并过去了,我拒绝让 Internet Explorer 7 也兼容。随着 IE8 在 2015 年(XP 支持正式终止)变得过时,是时候用 2.0 版本完全向前发展了。
继续努力!
到 2013 年,放弃对旧版 IE 的支持将会变得很有意义。使用这些旧浏览器的用户可能并不是任何人的目标受众。我认为 IE6/7 已经过时了。IE8 将持续存在,直到 XP 停止使用(因为它可以更新到的最高版本)。但使用 IE8 的人要么是头脑简单,要么是公司里的死板员工,要么是进行测试的开发者 ;]
我唯一担心的是,我们的一些网站被西欧最大的雇主(拥有超过 100 万名员工!)使用,他们仍然使用 IE6,因为这是他们所有核心 Web 应用开发所使用的 Web 浏览器,并且它们与其他版本的 IE 或其他 Web 浏览器不兼容。
@James:好吧,这是事实… 我不明白为什么公司会如此落后。但这是 IT 部门的责任,其中许多人出于某种原因害怕改变,幸运的是,我们客户的 IT 部门已经意识到更新并不会杀死你。
我认为放弃 IE7 及更早版本是明智的,但 IE8 可能应该继续支持一段时间。因为即使统计数据表明旧版 IE 的使用率越来越低。大多数 Firefox 和 Chrome 用户是个人用户,而 IT 公司的大多数客户都在企业中,他们大多使用 IE。