Удалите ненужные функции jQuery - PullRequest
8 голосов
/ 24 августа 2010

Helo,

Библиотека, такая как jQuery, полностью загружена и поставляется со многими функциями, которые мы не можем использовать в наших скриптах.Интересно, есть ли способ сказать, прочитайте мой скрипт, найдите все функции jQuery, которые я использую, и их зависимости, а затем удалите оставшиеся функции из библиотеки jQuery.Это может быть применено практически к любой библиотеке и не является специфическим вопросом для jQuery.

Дайте мне знать ваши мысли о том, как это достижимо.Я знаю, что это может быть головной болью позже, если, скажем, я добавляю новую функцию в свой код, и эта функция не существует в jQuery.Но я готов пойти на этот риск.

Ответы [ 5 ]

3 голосов
/ 26 августа 2010

Вы можете использовать закрывающий компилятор:

Кажется, вы делаете то, что хотите.

2 голосов
/ 24 августа 2010

Даже если я понятия не имею, почему, вы можете сделать это:

Перейти к http://github.com/jquery/jquery/blob/master/Makefile

Это make-файл из библиотеки jQuery.JQuery разделен на несколько модулей, которые объединяются.Эти base files упорядочены в зависимости, так что вы можете очистить модули, которые вы не используете ...

Я не уверен на 100%, работает ли это, никогда не пробовал самостоятельно, но вы можетедать этому шанс.

1 голос
/ 24 августа 2010

Если ваш JavaScript не очень динамичный по своей природе, вы можете дать Closure Compiler шанс.

Соберите все ваш JavaScript в одном месте (включая jQuery, плагины, другие библиотеки, все) и отправьте его в gcc, используя расширенную опцию компиляции.

Это удалит все неиспользуемые функции, которые могут потенциально сломать ваш код . Я бы порекомендовал это, только если у вас есть тестовые случаи, или ваш JS достаточно мал, чтобы полностью тестировать вручную.

Простой пример того типа оптимизации, который выполняет компилятор:

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

hello();

будет уменьшено до:

alert("Hello, undefined");

, поскольку это все, что в основном происходит.

1 голос
/ 24 августа 2010

jQuery не предлагает пакетные загрузки, как это делают Prototype и MooTools, и, вероятно, будет сложно создать их самостоятельно, поскольку вам придется разбирать все зависимости вручную - и снова и снова для каждого нового выпуска jQuery.

Более того, в настоящее время размер полной библиотеки 24 КБ в сжатом виде, я полагаю, вам не важен размер. Библиотека загружается только один раз - если вы загружаете ее из CDN, она кэшируется централизованно, что делает ее осуществимой даже для медленных модемных соединений.

0 голосов
/ 24 августа 2010

Это была бы плохая идея.

Во-первых, вы можете удалить, скажем, InArray, так как вы можете использовать базовую альтернативу javascript, но другие сохраненные вами методы могут полагаться на InArray.

В основном методы jQueries используют друг друга для выполнения задач, это один из способов уменьшить размер пакета.

Если вы действительно хотите это сделать, я бы сделал так:

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

И начать с нуля!

...