直升机,
像jQuery这样的库已经完全加载,并且附带了许多我们在脚本中不能使用的函数。我想知道是否有办法说我读脚本找出我正在使用的所有jQuery函数及其依赖项,然后从jQuery库中删除其余的函数。这可以应用于几乎任何库,并不是一个特定于jQuery的问题。
让我知道你对如何实现这一点的想法。我知道如果我在我的代码中添加一个新函数并且jQuery中不存在该函数,那么以后可能会很头疼。但我愿意冒这个风险。
答案 0 :(得分:3)
答案 1 :(得分:2)
即使我不知道为什么,你也可以这样做:
转到http://github.com/jquery/jquery/blob/master/Makefile
这是jQuery lib中的makefile。 jQuery被分成几个模块,这些模块放在一起。那些base files
是在dependdencys中订购的,所以你可能会剥掉你不使用的模块......
我不是百分百确定这是否有效,从未尝试过,但你可以试一试。
答案 2 :(得分:1)
jQuery不提供像Prototype和MooTools这样的打包下载,并且自己构建它们可能会很难,因为你必须手动整理所有依赖项 - 并且每次新的jQuery版本都会一次又一次。
此外,目前24kb gzip压缩整个库的大小,我把它给你的大小并不重要。该库只加载一次 - 如果您从CDN加载它,它将被集中缓存,即使对于慢速调制解调器连接也是可行的。
答案 3 :(得分:1)
如果您的JavaScript本质上不是高度动态的,那么您可以给Closure Compiler一个镜头。
在一个地方(包括jQuery,插件,其他库,所有内容)收集 所有 您的JavaScript,并使用高级编译选项将其提供给gcc。
这将删除可能会破坏您的代码的所有未使用的功能。如果你有测试用例,或者你的JS足够小,可以手动完全测试,我只会推荐这个。
编译器执行优化的一个简单示例是:
function hello(name) {
alert('Hello, ' + name);
}
hello();
将缩减为:
alert("Hello, undefined");
因为这就是基本上发生的一切。
答案 4 :(得分:0)
这是一个坏主意。
首先,您可能希望删除let InArray
,因为您可以使用基本的javascript替代方法,但您保留的其他方法可能依赖于InArray。
基本上,jQueries方法使用彼此来完成任务,这是他们保持包大小减少的方法之一。
如果你真的想这样做,我会这样做:
$M = MyjQuery = function(element,context)
{
this.fn = {}
this.extend = function(base,new)
{
//Extend them here
}
}
从头开始!
答案 5 :(得分:0)
jQuery 确实提供了一个精简的构建,其中不包括 ajax 和效果模块: https://jquery.com/download/
附带说明,jQuery 的这个页面使您能够准确选择要包含在包中的内容,但用于 UI 项目。认为指示会很有用: