你好,
像jQuery这样的库是完全加载的,其中包含了许多我们在脚本中可能不会使用的函数。我想知道是否有一种方法可以读取我的脚本,找出我正在使用的所有jQuery函数及其依赖项,然后从jQuery库中删除其余的函数。这适用于几乎任何库,不是一个特定于jQuery的问题。
请告诉我您对如何实现此目标的想法。我知道如果将来添加了一个新的功能到我的代码中,而该功能在jQuery中不存在,这可能会成为一个麻烦。但我愿意承担这个风险。
你好,
像jQuery这样的库是完全加载的,其中包含了许多我们在脚本中可能不会使用的函数。我想知道是否有一种方法可以读取我的脚本,找出我正在使用的所有jQuery函数及其依赖项,然后从jQuery库中删除其余的函数。这适用于几乎任何库,不是一个特定于jQuery的问题。
请告诉我您对如何实现此目标的想法。我知道如果将来添加了一个新的功能到我的代码中,而该功能在jQuery中不存在,这可能会成为一个麻烦。但我愿意承担这个风险。
即使我不知道原因,你也可以这样做:
前往http://github.com/jquery/jquery/blob/master/Makefile
这就是jQuery库的makefile。jQuery被分为几个模块,它们被组合在一起。这些“基本文件”按照依赖关系排序,因此您可以剥离您不使用的模块...
我不能100%确定它是否有效,因为我从未尝试过,但你可以试试。
data.js
上工作,然后他们会有一群测试人员来测试新的方法/功能。所以,这只是一个设计过程,没有更多的东西 - 不过是个好的参考 :) - RobertPittcss
)与elem.offsetWidth
等一起使用,但是如果删除类似css的子包,那么会导致巨大的麻烦,因为它在整个库中都被使用!更不用说新增的库了,它们也会受到影响 :( - RobertPitt如果你的JavaScript不是非常动态的,那么你可以尝试使用Closure Compiler。
把所有的JavaScript代码放在同一个地方(包括jQuery、插件、其他库等等),然后使用高级编译选项将其输入给gcc。
这将删除所有未使用的函数,这可能会导致你的代码出现问题。我只建议在有测试用例或者JS足够小以便手动完全测试时使用该方法。
编译器所做的一种简单的优化示例是:
function hello(name) {
alert('Hello, ' + name);
}
hello();
将会被缩减为:
alert("Hello, undefined");
因为基本上就是这样发生的。
jQuery没有像Prototype和MooTools那样提供打包下载,自己构建可能会很困难,因为您需要手动解决所有依赖关系——并且为每个新的jQuery版本重复这个过程。
此外,完整库的已压缩大小目前为24kb,我告诉您大小并不重要。该库仅加载一次——如果从CDN加载它,则会集中缓存,使其即使在慢速调制解调器连接下也可行。
这将是一个不好的主意。
首先,您可能希望删除例如InArray
之类的内容,因为您可以使用基本的JavaScript替代方法,但其他方法可能依赖于InArray。
基本上,jQueries方法彼此使用以完成任务,这是他们保持包大小的方式之一。
如果您真的想这样做,我会这样做:
$M = MyjQuery = function(element,context)
{
this.fn = {}
this.extend = function(base,new)
{
//Extend them here
}
}
jQuery提供了一个精简版构建,其中排除了ajax和effects模块: https://jquery.com/download/
顺便提一下,这个jQuery页面可以让您选择包中需要包含的内容,但对于UI项目而言,这可能会很有用: