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.js
和 jquery.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.js和jquery.slim.js有以下区别:
在 jquery.slim.js 中,删除了以下功能:
-
jQuery.fn.extend
jquery.fn.load
jquery.each // 附加一堆处理常见AJAX事件的函数
jQuery.expr.filters.animated
ajax 设置,例如 jQuery.ajaxSettings.xhr、jQuery.ajaxPrefilter、jQuery.ajaxSetup、jQuery.ajaxPrefilter、jQuery.ajaxTransport、jQuery.ajaxSetup
xml解析类似jQuery.parseXML,
jQuery.easing、jQuery.Animation、jQuery.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 请求的独立库之一。通常,对所有 Web 动画使用 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包有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Java eclipse中创建项目以后缺省包和命名的包有啥区别?