JQuery

jQuery 1.8 版本正在进行一次大扫除,想要把那些不够安全的、缺乏效率的、用处不大的,以及带有误导的特性统统去掉。我们也开始着手进行一些工作,以使你们能够构建自定义的版本来选择不要加载库中的某些部分,这样就更加多快好省了。这些工作成果会使你们在享受到所需要的那部分 jQuery API 的同时,不必负担那些你产不需要的部分所带来的成本。

既然我们现在已经扫净一屋,是时候来展望何以扫天下了。只有一件事会对我们的未来愿景形成障碍,即旧版本的浏览器这个幽灵。Internet Explorer 的6、7、8版本——统称旧版本的 IE——在过去十年里一直是 web 开发者的眼中钉肉中刺。总体情况是,这些已经过时的的浏览器仍然会占到某些网站三分之一的访问用户量。这可是一大批用户——这部分人群仍然需要 web 站点所提供的信息、服务和产品。对于众多采用了 jQuery 的 web 站点而言,忽略这么大的一群用户是不现实、也不经济的。

jQuery 所考虑的正是要解决浏览器差异的问题,所以我们不会放弃该设计理念的核心,把几百万(无论出于什么动机)仍然在使用旧版本的 IE 的 Internet 用户甩手不管。但同时,我们也想要与时俱进,充分利用最新浏览器的长处,尤其是要关注方兴未艾的移动市场。

未来之路

jQuery 1.8 会在一个月之内发布。以下是我们对于接下来两个版本的 jQuery 的一些考虑,以及它们的发布时间:

  • jQuery 1.9(2013年初):我们将去除1.8版本中已经过时的许多接口,其中一些将作为 jQuery 项目支持的插件或替代 API 提供出来。IE 6/7/8将像现在一样得到支持。
  • jQuery 1.9.x(在 2013年及以后进行):此版本将持续维护,以适应任何回归测试结果、新的浏览器缺陷等。
  • jQuery 2.0(2013年初,1.9发布以后不久就会发布):此版本会支持和 jQuery 相同的 API,但是将去除对于 IE 6/7/8中一些古怪特性的支持,例如给人添堵的事件模型、IE7中的“attroperties”,以及(IE 解析专用的)HTML5的 shims 库等。

我们的目标是让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更好呢? 答案是更小的尺寸、更佳的性能,并且没有因为需要支持旧版本的 IE 所带来的问题。我们期望可以对$选择符的异常处理做一些改进。2.0中还实现了 Deferred 对象,这是另外一个例子,如果要支持旧版本的 IE 的话,我们就无法做到这一点。

我的网站上仍然有许多访问用户在使用 IE 7/8,但我仍然想使用 jQuery 2.0。可以么? 如果您的网站需要提供对旧版本的 IE 的支持,并且我们预计大多数网站在至少一两年内还是需要提供此支持的,如果是这样,您可以使用 IE 的条件式注释以实现仅让那些使用旧的 IE 的访问用户包含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做个“旧版本的 IE插件” 为旧式 IE 所写的特殊处理代码是遍布整个 jQuery 库的。如果要重构全部代码来提供足够有力的挂钩,使得对于旧版本的 IE 的支持可以实现为一个插件的话,这样的代码对于最新的浏览器来说就会过于复杂了。还有,使用公用 CDN 的 jQuery 并且要支持旧版本的 IE 的开发者就必须包含两个文件(jQuery 2.0 及旧版本的 IE 插件),而不是一个了。

jQuery 2.0发布以后,1.9版本将往何处去? 与过去不同的是,我们将持续为1.9版本修正缺陷(并作次要版本发布)。由于刚刚对1.8和1.9版本做过一次大的清理,我们不打算在未来再为它们加上一大堆新的 API。相反,我们宁愿在适当的时候,以和两个版本都兼容的插件的形式来添加新的功能。所以,如果你还要继续使用1.9版本,不用因此产生自己已经落伍了的感觉。

所以 jQuery 2.0的核心理念是为移动设备而打造的? 并非如此。尽管 jQuery 2.0 对于 HTML 移动应用程序而言是个很趁手的工具,包括那些使用 jQuery Mobile 的开发者也会这么认为,但它并不是一个仅支持 Webkit 的库,它的目标平台也不仅是 iOS 和 Android。除了移动浏览器以外,2.0版本会支持(并且会在这些平台上测试!)最新版本的桌面版 Internet Explorer、Opera、Firefox、Safari,以及 Chrome。

jQuery 2.0会缩小/变快多少? 在我们做出来,或至少到我们接近完成之前,这个问题我们回答不了。但可以肯定的是,2.0版本临时发布时,我们会告诉你更多内容。更好的做法是,你可以在 Beta 版本释出时试用,这样你就能眼见为实了!