删除不需要的jQuery函数

时间:2010-08-24 08:16:59

标签: javascript jquery concept

直升机,

像jQuery这样的库已经完全加载,并且附带了许多我们在脚本中不能使用的函数。我想知道是否有办法说我读脚本找出我正在使用的所有jQuery函数及其依赖项,然后从jQuery库中删除其余的函数。这可以应用于几乎任何库,并不是一个特定于jQuery的问题。

让我知道你对如何实现这一点的想法。我知道如果我在我的代码中添加一个新函数并且jQuery中不存在该函数,那么以后可能会很头疼。但我愿意冒这个风险。

6 个答案:

答案 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 项目。认为指示会很有用:

https://jqueryui.com/download/

示例: enter image description here