jQuery 1.8 版本征集建议

发布于 作者

我们已经准备好进行下一轮社区意见征集,这次是针对 1.8 版本!这是您提出建议的机会,我们可以修复、添加、更改或删除 jQuery 中的某些内容,使其变得更好。

您可以使用 此表格 添加建议;尽可能提供指向错误报告、包含详细描述的页面或代表您想法的实现的链接。我们希望在 12 月 5 日之前收到您的所有意见,以便我们在制定 1.8 版本路线图之前阅读和讨论它们。

非常感谢您在我们关于如何通过精简 jQuery 来改进 jQuery 的 早期博客文章 中留下的建议。我们已经仔细阅读了这些评论,并对如何在未来版本中解决其中一些问题有一些想法。

创建可配置的下载构建器

很多人想知道为什么我们没有办法构建一个只包含您需要的 jQuery 部分的文件,例如 jQuery UI 具有该选项。情况并非完全相同。您知道是否使用 UI 手风琴,因为您直接调用它。您通常不知道您自己或您在页面上包含的某个插件是否使用 $.fn.prepend() 或 $.fn.animate()。您是否使用它们甚至可能取决于您在运行时传递给插件的参数。

为了使 jQuery 开发易于管理并确保 CDN 可以提供互联网上每个人都可以共享和有效缓存的单个文件,团队希望坚持使用单个文件作为其主要产品。创建可配置的下载可能会略微提高文件大小,但也会使文档、插件使用和调试变得更加复杂。这对您和我们来说都是更多工作。

我们已经开始努力提高模块化,方法是消除 jQuery 内部不需要的依赖项;我们宣布的许多弃用功能将针对删除这些依赖项。通过奠定这种基础,其他想要创建自己的更小 jQuery 子集或模块化版本的人应该更容易地完成这项工作。

但是,我们相信我们可以做得比这更好,并且希望为任何用户提供自动化的方式来创建包含应用程序代码和仅包含 jQuery 所需部分的最佳最小化文件。特别是,我们正在与 Google Closure Compiler 团队合作,看看我们是否可以使用其 ADVANCED_OPTIMIZATIONS 选项。我们将随着开发的进展提供有关我们进展的更多信息。

等到 2.0 版本再删除内容

我们对破坏现有的所有 jQuery 代码很敏感。这就是我们尽早弃用某些功能的原因,以便人们有足够的时间更改他们的代码。仅仅因为我们今天弃用了一些内容,并不一定意味着我们将在下一个版本中删除它。我们相信 1.8 版本中实际删除的功能列表很小,不太可能影响大多数用户。

如果我们与 Closure Compiler 的实验成功,我们甚至可能保留许多弃用功能,但如果您不使用它们并构建包含 jQuery 的自定义应用程序文件,它们将被自动删除。这将是两全其美。

删除 IE 6、7 和/或 8 支持

这个话题经常出现,所以让我们试着彻底解决它。人们往往高估了 jQuery 中专门与 IE 相关的代码量。IE 6 和 IE 7 中的大多数问题也存在于 IE 8 中,因此,只要 IE 8 仍然拥有可观的台式机市场份额并且必须得到支持,删除对前两个的支持就没有真正的大小或复杂性上的优势。没有人(包括微软本身)喜欢这些侏罗纪公园浏览器,但现在剥夺对它们的 поддерживать会导致许多用户的网站崩溃。

也就是说,我们知道在某些情况下,例如移动浏览器,不需要对旧版 IE 进行支持。我们正在研究将尽可能多的代码放到一个清晰标记的块中的方法,以便那些愿意创建自己的自定义 jQuery 版本的人可以轻松地将其删除。也可能利用 Closure Compiler 来解决这个问题。但是,我们不确定这是否甚至可以为压缩后的文件大小提供显著的空间节省,而且它不会提供性能提升,因为其他浏览器不会走这些代码路径。

删除 jQuery.browser

我们已经记录了近两年,我们打算将 jQuery.browser 转移到一个插件中,并且许多人在评论中也提出了这个建议。浏览器嗅探不是查找功能的可靠方法,我们建议使用像 Modernizr 这样的东西。用于浏览器嗅探的正则表达式很大,而且压缩效果不好;将其移动到插件中将确保只有使用它的人必须支付这种大小的代价。

您的想法呢?

请利用这次机会给我们提供您的意见。团队期待着审查您的建议。哦,别忘了尽快尝试 jQuery 1.7.1!

jQuery 1.8 版本征集建议” 上有 108 条想法

  1. 将 jquery 分割成多个 js 文件,一个用于 DOM 操作函数,一个用于 AJAX,一个用于工具函数,一个用于核心 jquery(基本 $ 支持)。

    这将允许在除浏览器之外的其他环境中使用 jQuery 的部分,例如没有 DOM 的环境,或者允许在 Web 工作者中使用 $ajax,以及许多其他用例。

  2. 最重要的是 Google Closure Compiler 的高级优化支持。
    不要删除旧浏览器支持,而是使用条件编译。
    将所有可以被剪切掉的内容都放在条件编译块下。

    我喜欢 jQuery,但现在它又胖又丑,是时候用高级优化来改变它了。

  3. David Svetlik 说:

    现在只是头脑风暴,但是使用 .is() 不带参数而不是“丑陋的”get(0) 或长度 jQuery 检查怎么样?

    所以这样
    if ($(‘#some-element’).get(0)) {}

    将变成这样
    if ($(‘#some-element’).is()) {}
    /* 另外它返回一个“真实”的布尔值,太棒了!*/

    另外,是否有人已经提到,拥有名为 is() 和 not() 的方法,而每个方法都做着完全不同的事情,这有点令人困惑?

  4. Cliff Persaud 说:

    我认为内置模板引擎将很有用。我知道 templ() 不会继续发展,但我希望看到一个内置的替代方案。

  5. Anton Smatanik 说:

    首先 - 删除 IE 6、7 支持。这是原则问题。

    其次 - 联系插件开发者并向他们宣布更改,他们将做好准备并更新他们的代码。换句话说,你可以在他们的插件中添加可用的 jQuery 最高版本。不要被低质量的插件拖累!

  6. 像 show(time)、hide(time)、fadeIn/Out、animate 等过渡效果在移动设备上的性能非常糟糕。希望看到这方面的一些进展。