jQuery 1.9 和 2.0 - TL;DR 版
似乎很多人对上一篇文章存在疑问和误解,所以让我们尝试用简短的问答形式来回答一些在那里留下的评论。
为什么 jQuery 核心团队要放弃对老 IE (IE 6/7/8) 的支持? 我们没有!jQuery 1.9 在明年发布时将会支持老 IE。jQuery 团队将在 jQuery 2.0 发布后继续支持和维护 1.9 版本。
为什么你让我用条件注释来包含 jQuery? 我们没有!你可以对我们支持的所有浏览器使用 jQuery 1.9,从 IE6 到最新版本的 Chrome、Safari、Opera 或 Internet Explorer。
当 jQuery 2.1 发布并添加 API 时,jQuery 1.9 会支持它们吗? 你能借用你的水晶球吗?jQuery 2.1 不太可能在 2014 年之前发布,所以现在说 2012 年中旬的 jQuery 2.1 会是什么样子还为时过早。我们的总体目标是保持 1.x 和 2.x 行同步,并通过插件添加功能;请参见上周会议的主题演讲。
你将支持 jQuery 1.9 多久? 只要老 IE 在网络上是一个重要的因素。甚至有可能在 1.x 行中会有进一步的发布,但我们还没有收到上一个问题中要求的水晶球。然而,当微软在 2014 年 4 月放弃对 Windows XP 的支持时,将会对老 IE 的安装基础造成打击。
我还有很多 IE8 用户,你不能只放弃 IE6 和 IE7 吗? 老 IE 浏览器共享许多相同的缺陷,所以仅仅删除其中三个在 jQuery 2.0 中并没有帮助。如果你需要任何类型的老 IE 支持,一个支持的 jQuery 1.9 会在那里等你。
我的网站在中国,我们 22% 的用户仍在使用 IE6! 看起来像是某种侵犯人权的行为。哦,那不是一个问题。
好吧,IE7 对 DOM 的更改很少,但 IE8 确实更改了 DOM 使其更符合 DOM 级别 1,尽管它直到 IE9 才支持 DOM 级别 2。
我不明白为什么人们在对放弃对遗留浏览器支持大喊大叫,实际上它就在即将发布的 jQ 1.9 中。一些开发者只是没有仔细阅读博客。
var isIe6=!-[1,]&&!window.XMLHttpRequest;
while(isIe6)
{
alert(“你为什么使用 IE6??”);
}
哈哈,中国的人权侵犯。
我喜欢“我们的总体目标是保持 1.x 和 2.x 行同步,并通过插件添加功能”这个想法。
只是为 jQuery 团队增加了额外的代码库支持。
为什么是 2.0 版?只需运行 jQuery 的一个单独版本,称为“jQuery Lite”或类似的东西,并与核心框架同步开发。
如果 v2.0 的主要目的是使框架更轻便和更快,那么你可能最好保持方法简单,而不是拥有复杂的版本历史。例如,当新的技术开始推出时,你是否要为 v1.9 发布后续更新?你将为我们这些“玩安全”的开发者提供多长时间的支持,他们不情愿地支持 IE 用户?
除非在不久的将来放弃对后者的支持,否则我建议你将“轻量级”jQuery 与“重量级”jQuery 隔离开来。*耸耸肩*
~ 2 美分
我认为这是一项积极的进步。对过时技术的支持时间越长,它对我们的困扰就越大。但我也认为,在较长时间内继续支持的平衡也很好。:)
拜托,别再讨厌了,那只是关于中国的笑话,没什么别的。
顺便说一下,如果你能为现代浏览器提供更好的实现,并保持与老 IE 的兼容性,那将是个好消息。
还有最新版本的 Firefox :P
alert(‘这对 Firefox 或 Chrome 是好事,但 IE6 仍在 中国使用’);
-_-!
jQuery 团队干得好,这太棒了。感谢你为那些不明白的人解释清楚。这是网络向前迈出的一大步。这尤其将帮助移动网络。我以前从未在移动项目中使用过 jQuery,因为它的体积太大(被迫使用 jqMobi 或 zepto)。一旦 2.0 发布,这个担心就消失了,我将拥有一个修剪过的 jQuery 版本,加载速度很快。
谢谢!
放弃对 IE8 的支持还为时过早。它仍然占据着很大一部分浏览器市场份额。为什么不为那些进行移动开发或无需担心支持老浏览器的用户创建 jQuery Lite,就像其他人建议的那样?
@Ryan Kaldari,你难道不觉得在发帖之前,你甚至都没有阅读第一个问题的答案而感到有点尴尬吗?此外,只需将 Lite 替换为 2.0,你的愿望就实现了。
我想知道有多少人担心 2.1 版本(在第一篇博文中甚至没有提到)实际上正在他们所有的项目中使用最新版本。我见过的多数项目使用开发开始时可用的版本,并且不会随着版本的发布而升级,因为可能存在破坏性更改,并且存在“如果它没有坏,就不要修理它”的心态。
支持非常旧的浏览器(在 2014 年)的开发人员将使用稍微旧版本的 jQuery。那么这里的问题是什么呢?
有时,前进需要一些艰难的决定和坚持这些决定。是的,对于用户(我们这些开发人员来说)来说可能很痛苦,但这并不是世界末日,而且至少要两年后才会发生。
看看苹果公司反对 Flash 之后,Flash 的衰落。人们都很震惊,但苹果公司知道 Flash 这些年来被开发人员滥用,并且拖累了网络。它发挥了作用,但更好的技术正在出现,它们蓬勃发展的唯一方法是创造一个需要填补的空白。现在看看我们今天身处何处,五年后。一个更好的位置。网络已经发展。jQuery 的这种前进与之无异。有些东西(老 IE)需要被扼杀,才能最终消亡。
@Harry - 完全正确。选择最适合你需求的 jQuery 版本。简单。
我认为这是一件好事,因为技能发展很快,我们必须淘汰过时的技能。我支持 jQuery 团队,干得好。
当 2.x 版本中添加了未移植到 1.9 版本的新功能时会发生什么?然后我们需要做出艰难的选择,是在使用酷炫的新功能,还是放弃对 IE7、IE8 和 IE9 的支持(对于某些人来说,这可能是不可能的)。
你们有一个“总体目标”要使它们保持同步,这很好,但这远远不是企业需要和需要的确定性和保证,这是你们这些开源黑客似乎没有意识到的。
有了 2.0 以及对 Internet Explorer 8 及以下版本的支持的移除,为什么不单独提供一个文件(也将在 Google 的 CDN 上提供),专门用于这些版本呢?这样,我们就可以在 HTML 标题中引用主 2.0 版本,然后使用 IE 条件语句加载包含已删除功能的附加文件,如果该浏览器正在使用。
jQuery 的一个优点是它支持 IE 6-8,并且能够编写一次代码,并在所有平台上都能基本相同地运行。在 2.0 版本中移除支持,却没有提供在检测到该浏览器时加载旧 IE 功能的选项,这将激怒开发人员。有些人会盲目地升级到 2.0 版本,并说 jQuery 现在“坏了”,或者只要有可能就坚持使用 1.9 版本,因为如果他们的大型网站突然停止运行,他们的老板会骂死他们。
我必须同意上面 Teg 的观点,将对早期版本的 IE 的支持作为插件保留,比将 jQuery 分成两个代码分支更有帮助。这将使网站开发人员能够跟上标准浏览器的最新代码改进及其使用这些浏览器的优秀客户,同时也让他们能够随着用户更新浏览器或迁移而放弃对旧版 IE 版本的支持(例如:现在只有 5% 的用户使用 IE7,我可以从代码中删除 IE7 支持插件)。作为一名大型企业内部网网站的设计人员,让我告诉你 IE(我存在的祸根)及其无休止的问题并不会很快消失。相信我,5 年后,我们都会谈论支持 IE8-9,甚至 IE10 有多糟糕。
你确定吗?你不想永远支持 IE6 吗?……操……我是一个来自中国的程序员……
关于中国的回答不错!
你确定吗?你不想永远支持 IE6 吗?……操……我是一个来自中国的程序员……
你可以永远使用 <2.0 版本
这是我的真实经历,并非个例。
中国客户告诉我:我的网站在 IE6 中无法访问。
我的回答:你的浏览器太旧了
我的中国客户:我明白了。
美国/英国客户告诉我:我的网站在 IE6 中无法访问。
我的回答:你的浏览器太旧了
美国/英国客户:你能修复它吗?
另一个开发人员可以扩展 jQuery 以在插件中支持旧版本的 IE 吗?考虑到你的时间安排,我不确定是否需要这样做,但这可能是一个不错的选择。
我认为很多人遇到的问题是版本号。当 2.0 版本发布时,并不意味着 1.9 版本已经死了。也许给它们起个名字会更好,比如“jQuery Classic”和“jQuery Modern”,然后让它们都保持相同的版本号。
你不需要插件就能在未来的 jQuery 版本中实现对老 IE 的支持,只需使用 1.9 分支,正如上面 TL;DR 版本中所述,它将继续被支持,直到“老 IE 在网络上仍然是一个重要因素”。
人们只读了上面的问题,没有读答案吗?
我同意这里一些人的观点。创建一个遵循常规版本号的 jQuery 核心,并将对旧浏览器的支持作为插件提供。这样,在维护较小的文件大小的同时,也不需要两个代码分支,这对于那些不需要旧浏览器支持的人来说很方便。
@Daniel
我说这话的原因是,我从 90 年代后期就开始开发网站,一致性至关重要。现代程序员谈论渐进增强,并表示网站在每个浏览器中看起来不一样并不重要。
根据我与客户合作的经验,他们确实希望网站在每个浏览器中看起来都一样,而这是你的工作。他们希望网站外观一致,交互功能也一样。在 IE 6-8 的市场份额降至 0% 之前,我们必须继续使用条件注释和浏览器特定的 CSS 微调。jQuery 也确实帮助减少了为这些浏览器调试 JavaScript 代码的工作量。
对此有意见?他们会找到一个愿意或另一个愿意实际获得报酬的承包商。尝试支持最前沿的浏览器技术听起来不错,但许多人仍在使用 XP,如果他们坚持使用 Internet Explorer,最新版本是 8。你希望客户向他的母亲展示他付费的网站,然后发现它坏了嗎?
@zzz: 要求退钱。
非常好,我很少使用 IE6,但不想使用 IE5,我只想使用 chrome 或 IE9,因为那些支持 JQ 的浏览器会更好。
@teg
这不会破坏你现有的东西。
谁说 IE6-8 应该获得最新功能?它们根本不支持这些功能,没有黑客(polyfills)也无法实现。我多么希望我的旧 iPhone 能够运行最新游戏,但它做不到。它不够快。浏览器也是如此。我手机上的游戏运行得很好,只是不能运行最新的游戏。唉。
如果你的客户不了解他们可以选择在所有浏览器中完全支持较少的功能,或者在现代浏览器中支持新功能,那么你就没有做好你的工作。
[quote]
你们将支持 jQuery 1.9 多久?只要旧 IE 在网络上占有重要地位,就会一直支持。甚至可能在 1.x 系列中发布更多版本。
[/quote]
没错,这就是我需要听到的。谢谢。
(不过,一个更好的 “重要” 定义会有所帮助;-))
[quote]
…旧 IE 浏览器有许多相同的缺陷…
[/quote]
真的吗?好吧,我知道它们确实有一些相同的缺陷,但许多?真的吗?好吧,你们是手握 jQuery 代码的人,所以你们才是真正了解其中细节的人,但我认为我并不是唯一一个对听到 IE8 的缺陷与 IE6 的缺陷如此相似,以至于无法区分感到惊讶的人。我们在这里讨论的是多少代码?
但说实话,在我上面引用的第一点中得到你明确的答案后,我真的不再那么担心了:如果你打算根据需要继续支持 1.9,那么整个问题就变得无关紧要了;我的反对意见得到了解决。但我仍然感到好奇,所以听听更多关于 IE8 支持的含义会很好。
再次感谢。
哦,顺便说一下:我认为没有人评论过这两篇文章,实际上是停下来说 “感谢你们多年来为创建和维护 jQuery 所付出的辛勤努力”。所以我现在也来表达一下。谢谢。:-) 一点爱意能走很远。
未来版本的 3D 动画库会加入吗?
啊,太好了,就在我认为我们终于看到了光明,决定创建一个无需所有条件语句就能制作一致(ish)网站的方法时,我们却被告知新的 JQuery 不会支持开发团队不再青睐的浏览器。让我们忽略它是一个开源且免费的事实,以及我们应该停止抱怨,并假装 JQuery 是一款商业产品。
IE8 仅仅三年多一点,而且仍然是 XP 用户的唯一选择(忽略 FF、Opera、Chrome 等),好吧,我的许多政府客户仍在考虑从 IE6 迁移。我有幸能够选择 JQuery 1.9 来解决这个问题,但如果我想面向公众呢?我需要检测客户端浏览器并切换网站(这正是 JQuery 应该解决的问题),或者选择忽略 JQuery 2+。如果我想让我的网站面向未来,以便在几年后客户最终使用 IE11,而 JQuery 1.9 已经停止开发时,我不必重新编写所有代码怎么办?
如果我是 JQuery 插件编写者呢?我应该创建两个版本,还是只维护最新版本或旧版本 JQuery?
JQuery 被设计用来解决的问题,即网站能够跨浏览器使用所有 DOM,现在实际上被放弃了。也许有人可以创建一个其他库来包装 JQuery 版本,使其适用于所有浏览器。:-)
这可能听起来像一个奇怪的建议,但通过插件将旧 IE 功能添加到 jQuery 2.0 中怎么样?只是说一下…
jQuery 团队所做的事情比他们完全停止开发 jQuery 还糟糕。现在每个人都必须切换到 Prototype 1.7 或其他类似的东西,或者花费 7 年时间使用一支由高素质、无偿的开发人员组成的庞大团队编写自己的库。这对互联网来说是一场灾难,没有人能够再创建网站了,因为明年某个时候将出现两个版本的 jQuery,其中一个版本将不再支持旧版浏览器,以便为那些永远不需要针对旧版 IE 版本的开发人员(例如我)提供性能提升。
如果有人因此而死,我一点也不意外。这是一场闹剧。我希望你永远不要再睡觉,dmethvin。
拆分是一个非常好的决定。
在实际上不符合 HTML5 的旧浏览器上支持最新功能非常困难。
如果新的漂亮 API 无法与他们华丽的网站一起使用,那是微软的错,人们对微软感到失望,而不是 jQuery。
支持放弃 IE6/7/8!
对于那些仍然感到困惑的人来说,IE9 是微软对核心代码进行的一次重大重写。它在性能方面远远超过 IE8 及更早版本,这就是他们在更新版本中实现显著改进的方式。但他们牺牲的是完整性,这就是为什么它在支持最新标准和方法方面仍然落后于其他浏览器。
昨天我抱怨说 jQuery 应该隐藏不同浏览器 DOM 之间的差异。我想通过从 jQuery 网站上获取一段文字来佐证我的观点,然后在这里引用它。我找到的最接近的文字是在主页上,当你将鼠标悬停在跨浏览器上时,它会显示“IE 6+,FF 3.6+,Safari 5.0+,Opera,Chrome”。
它没有说 jQuery 的目的是让你的网站跨浏览器兼容,所以也许是我的误解。但是,我准备打赌这是一个常见的误解,我甚至会指出维基百科错误地写道“jQuery 是一个跨浏览器 JavaScript 库……”。
所以,如果 jQuery 是一个专门为特定浏览器设计的库,旨在简化 DOM 遍历,而不是一个旨在通过最低公分母支持简化对多个浏览器进行目标定位的库,那么我想问问各位专家:是否有商业或非商业库,其目的是通过提供最低公分母支持来简化跨浏览器编码?
@nick,jQuery 1.9 支持 IE 6/7/8,并且(在明年发布时)将由团队支持——即使 jQuery 2.0 发布之后也是如此。你在说什么呢?
鲜为人知的事实——当 jQuery 2.0 发布时,它不会导致 jQuery 1.9 停止工作。你们中有多少抱怨“放弃”(rtfa)IE678 支持的人,甚至没有使用最新版本的 jQuery?
我没有误解,但我仍然担心。当 2014 年到来时,我会想要使用 2.1。
IE8 是 XP 将支持的最后一个版本,也是 Win7 支持的第一个版本。如果有一个固执的浏览器版本拒绝消失(在 IE6 之后),那将是 IE8。
如果我在 2014 年的很大一部分客户用户群仍在使用 IE8,那么我将被限制在 1.9/2.0 组合中。我将无法使用 2.1 的功能,除非诉诸于从核心库中删除的浏览器嗅探。
我理解前进的必要性,这个问题在 2014 年可能会变得毫无意义(我对此表示怀疑),但这是我对一个建立在 IE6 兼容性基础上的库的担忧。
Rich
@Matt——我在这里要打断你。众所周知,如果将来出现你正在使用的库的某个未经宣布的版本,该版本添加了你目前不知道的功能,但由于兼容性原因你无法使用,那么你必须立即停止使用当前版本。很明显,你的网站一旦发布未来版本就会停止工作。jQuery 1.4.2,仍然被许多网站使用,因为它可靠、没有问题?哈,它会立即失效!
@Nick——这没有什么是你不能通过花 7 年时间用一支庞大的、才华横溢的无偿开发人员团队编写自己的库来实现的。说真的,jQuery 2.1 在 2014 年会做些什么,而 2013 年未发布的 jQuery 1.9 不会做?这为什么重要?网站仍然使用 jQuery 1.4.2,没有任何问题,因为它就是工作。网站将继续使用 jQuery 1.7.2 直到 2016 年及以后,而不会有人注意到。那么,为什么现在为了将来最多 2 年内你无法不使用的东西而停止使用 jQuery?
即使它是一个商业库,你也不能指望对旧浏览器提供永恒的支持。甚至微软也不希望它们得到支持。这就像指望 jQuery 团队永久地支持 Netscape 层或 ActiveX 控件一样。最终,它必须消失。
这里的问题是 IE8 **不是**一个遗留浏览器。它仍然是 Windws XP 的**当前**版本的 IE,并且 XP 仍然得到支持,并且仍然在许多系统中运行。可悲的是,XP 还不太可能消失。
2014 年 4 月 8 日。那一天,IE8 成为一个真正的遗留浏览器。在此之前,请不要将我们这些必须支持它的人视为二等公民。
天啊,我简直不敢相信人们连最简单的英语句子都读不懂。@Richard 和 @Joel,我不确定你们两个人为什么无法阅读这些博文和我的评论,并且仍然无法理解 jQuery 1.9 将在未来很长一段时间内得到支持。
这不是关于 jQuery 项目是否会支持 IE 6/7/8 的争论,它说我们将在所有这些博文中看到这一点。
我同意 @Alhadis 的观点,将 jQuery 分叉成一个精简版,并将主 jQuery 保持原样,支持所有浏览器。
或者,可以有一个自定义的 jQuery 下载构建器,其中“遗留 IE 支持”作为可选附加组件。
@dmethvin——感谢你直截了当、简单的回答。我期待着看到团队将为这两个新版本做出的改进。
我主要想问的是,jQuery 核心团队是否能够尽可能多地为第三方插件作者提供支持和指导。1.9/2x 的拆分意味着插件作者和用户很可能使用不同的版本,并且有时会影响到这一点(因为会发生错误)。