11

直升机,

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

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

4

6 回答 6

3

即使我不知道为什么,您也可以这样做:

转到http://github.com/jquery/jquery/blob/master/Makefile

那是来自 jQuery 库的 makefile。jQuery 被分成几个模块,这些模块放在一起。这些base files是在依赖项中排序的,所以你可能会剥离你不使用的模块......

我不能 100% 确定这是否有效,我从来没有自己尝试过,但你可以试一试。

于 2010-08-24T08:29:12.013 回答
3

您可以使用闭包编译器:

它似乎做你想做的事。

于 2010-08-26T04:21:19.907 回答
1

jQuery 不像 Prototype 和 MooTools 那样提供打包下载,并且自己构建它们可能会很困难,因为您必须手动整理所有依赖项 - 并且为每个新的 jQuery 版本一次又一次地整理。

此外,目前整个库的 gzip 大小为 24kb,我把它放在你这里并不重要。该库仅加载一次 - 如果您从 CDN 加载它,它会被集中缓存,即使对于慢速调制解调器连接也是可行的。

于 2010-08-24T08:20:13.527 回答
1

如果你的 JavaScript 在本质上不是高度动态的,那么你可以试试 Closure Compiler

将你所有的 JavaScript收集在一个地方(包括 jQuery、插件、其他库、所有东西),并使用高级编译选项将其提供给 gcc。

这将删除所有可能会破坏您的代码的未使用函数。如果您有测试用例,或者您的 JS 小到足以手动完全测试,我只会推荐这个。

编译器所做的优化类型的一个简单示例是:

function hello(name) {
    alert('Hello, ' + name);
}

hello();

将减少到:

alert("Hello, undefined");

因为这就是基本上正在发生的一切。

于 2010-08-24T08:38:59.213 回答
0

这将是一个坏主意。

首先,您可能想删除假设InArray,因为您可以使用基本的 javascript 替代方案,但您保留的其他方法可能依赖于 InArray。

基本上 jQueries 方法使用彼此来完成任务,这是它们保持包大小减小的方法之一。

如果您真的想这样做,我会这样做:

$M = MyjQuery = function(element,context)
{
    this.fn = {}
    this.extend = function(base,new)
    {
        //Extend them here
    }
}

并从头开始!

于 2010-08-24T08:24:00.627 回答
0

jQuery 确实提供了一个精简的构建,其中不包括 ajax 和效果模块: https ://jquery.com/download/

作为旁注,jQuery 的这个页面使您能够准确地选择要包含在包中的内容,但对于 UI 项目。认为指出以下内容会很有用:

https://jqueryui.com/download/

例子: 在此处输入图像描述

于 2021-06-21T07:21:54.653 回答