jquery的普通包和slim包有啥区别?

Posted

技术标签:

【中文标题】jquery的普通包和slim包有啥区别?【英文标题】:What are the differences between normal and slim package of jquery?jquery的普通包和slim包有什么区别? 【发布时间】:2016-05-27 05:31:18 【问题描述】:

CDNJSjquery.slim 包被放置。它的尺寸更小。与原版的主要区别是什么?快速浏览一下代码并没有找到答案,在https://jquery.com 上我没有找到任何关于slim 包的参考资料。

那么,jquery.jsjquery.slim.js 有什么区别?

【问题讨论】:

blog.jquery.com/2016/09/22/jquery-3-1-1-released 在我看来,你接受了一个平庸的答案,应该改变它。 @RobertSiemer,可能是,但在我看来,数百人的投票及时清楚地显示了现实。接受的答案足够完整和及时,现在仍然提供简短、快速和使用足够的解决方案。 我完全不同意你的观点。与以下其他答案相比,对已接受答案的投票表明没有任何意义(您应该知道这一点)。无论答案是否及时返回,对于公共 q/a 网站来说都是完全无关的。人们现在来到这里并需要可能的最佳答案。进一步:Bhojendra Rauniyar 完全可以不用这 15 个代表。点。 与其他答案相比,反对票的绝对数量是一个更好的质量指标。我刚刚意识到第二个答案实际上是投票最多的,所以没什么好说的了。跨度> 【参考方案1】:

来自announcement of jQuery 3.0 Final Release 的简短回答:

除了包含 ajax 和效果模块的常规 jQuery 版本外,我们还发布了一个不包括这些模块的“slim”版本。总而言之,它不包括 ajax、效果和当前已弃用的代码。

文件大小(gzipped)大约小 6k,23.6k vs 30k。

【讨论】:

【参考方案2】:

查看代码我发现jquery.jsjquery.slim.js之间有以下区别:

jquery.slim.js 中,删除了以下功能:

    jQuery.fn.extend jquery.fn.load jquery.each(附上一堆处理常见AJAX事件的函数) jQuery.expr.filters.animated AJAX 设置(jQuery.ajaxSettings.xhrjQuery.ajaxPrefilterjQuery.ajaxSetupjQuery.ajaxPrefilterjQuery.ajaxTransport) XML 解析(jQuery.parseXML), 动画效果(jQuery.easingjQuery.AnimationjQuery.speed

【讨论】:

值得注意的是Bootstrap 4 的目标是 jQ slim 版本。动画可能是最大的破坏点,但无论如何,大多数动画都可以使用 CSS3 做得更好更快。 可能想要编辑答案以不同的方式表达这一点 - 在删除的列表中说 jquery.each 令人困惑。【参考方案3】:

目前,最权威的答案似乎在issue 中,其中指出“它是一个自定义构建的 jQuery,不包括效果、ajax 和不推荐使用的代码。”详细信息将在 jQuery 3.0 中公布。

我怀疑排除 jQuery 库的这些组件的理由是认识到 jQuery 与 Angular 或 React 等其他 JS 框架结合使用的情况越来越普遍。在这些情况下,jQuery 的使用主要是用于 DOM 遍历和操作,因此将那些过时的或框架提供的组件排除在外,文件大小会减少大约 20%。

【讨论】:

也可供使用现代功能的开发人员使用,例如fetch(),它是XMLHttpRequest (AJAX) 的现代替代品。【参考方案4】:

jQuery 博客 jQuery 3.1.1 Released! 说,

超薄身材

有时您不需要 ajax,或者您更喜欢使用众多专注于 ajax 请求的独立库之一。通常,对所有网络动画使用 CSS 和类操作的组合会更简单。除了包含 ajax 和效果模块的常规 jQuery 版本外,我们还发布了一个不包括这些模块的“slim”版本。总而言之,它不包括 ajax、效果和当前已弃用的代码。如今,jQuery 的大小很少成为负载性能问题,但精简版本比常规版本小约 6k gzip 字节 - 23.6k vs 30k。

【讨论】:

【参考方案5】:

我可以看到 $.ajax 已从 jQuery slim 3.2.1 中删除

来自 jQuery docs

您也可以使用不包括 ajax 和效果模块的 slim 构建

以下是删除功能的超薄版本的评论

/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */

【讨论】:

$.ajax 的替代品是什么? @Zyo 在纯 javascript 中使用 xmlhttprequest 对象或使用 jQuery 普通版本。 fetch API 是原生的并且非常强大developer.mozilla.org/en-US/docs/Web/API/Fetch_API 这里如何使用它developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch @Octavioamu fetch 是一个选项,但可能需要基于支持的浏览器的 polyfill【参考方案6】:

如前所述,Ajax 和效果模块已从 jQuery slim 中排除,从 3.3.1 开始,解压缩的缩小版本的大小差异为 85k 与 69k(slim 节省 16k)或压缩后的 30vs24,重要的是要注意bootstrap 4 uses the slim jQuery 所以如果有人想要完整版,他们需要调用它

【讨论】:

【参考方案7】:

当我想使用 jQuery UI 时有很大的不同 使用瘦版本的 jQuery,这是不可能的。事实上,slim 版本不包括 ajax 和效果模块

【讨论】:

【参考方案8】:

我在创建表单联系人时发现了不同之处: slim(由 boostrap 4.5 推荐):

在发送电子邮件后,全局变量会卡住,如果用户按 f5(重新加载页面),则会再次发送。 分钟: 之前的错误将得到解决。我受了多大的苦!

【讨论】:

以上是关于jquery的普通包和slim包有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

tar包和tar.gz包有啥区别

Java eclipse中创建项目以后缺省包和命名的包有啥区别?

jQuery3 slim版本和普通版本区别,如何选择?

Spark ML 和 MLLIB 包有啥区别

Go 中的 path 和 path.filepath 包有啥区别

Microsoft.Azure.Storage 和 WindowsAzure.Storage Nuget 包有啥区别?