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