Helo,
Библиотека, такая как jQuery, полностью загружена и поставляется со многими функциями, которые мы не можем использовать в наших сценариях. Интересно, есть ли способ сказать, прочитайте мой сценарий, найдите все функции jQuery, которые я использую, и их зависимости, а затем удалите оставшиеся функции из библиотеки jQuery. Это может быть применено практически к любой библиотеке и на самом деле не является вопросом, специфичным для jQuery.
Дайте мне знать ваши мысли о том, как это достижимо. Я знаю, что это может быть головной болью позже, если, скажем, я добавляю новую функцию в свой код, и эта функция не существует в jQuery. Но я готов пойти на этот риск.
Даже если я не знаю почему, вы можете сделать это:
Перейдите на http://github.com/jquery/jquery/blob/master/Makefile
Это make-файл из jQuery lib. jQuery разделен на несколько модулей, которые собираются вместе. Эти базовые файлы
упорядочены в dependencys, так что вы можете удалить модули, которые не используете ...
Я не уверен на 100%, работает ли это, никогда не пробовал самостоятельно, но вы можете дать этому шанс.
Это было бы плохой идеей.
Во-первых, вы можете удалить, скажем, InArray
, поскольку вы можете использовать базовую альтернативу javascript, но другие методы, которые вы сохраняете, могут полагаться на InArray.
Обычно методы jQueries используют друг друга для выполнения задач, это один из способов уменьшить размер пакета.
Если вы действительно хотите это сделать, я бы так сделал:
$M = MyjQuery = function(element,context)
{
this.fn = {}
this.extend = function(base,new)
{
//Extend them here
}
}
И начать с нуля!
Если ваш JavaScript не очень динамичен по своей природе, вы можете попробовать компилятор закрытия.
Соберите все ваши JavaScript в одном месте (включая jQuery, плагины, другие библиотеки и т. д.) и передайте их в gcc с помощью опции расширенной компиляции.
Это удалит все неиспользуемые функции, которые могут нарушить ваш код. Я бы рекомендовал это только в том случае, если у вас есть тестовые примеры или ваш JS достаточно мал, чтобы полностью протестировать его вручную.
Простой пример оптимизации, которую делает компилятор:
function hello(name) {
alert('Hello, ' + name);
}
hello();
будет сокращен до:
alert("Hello, undefined");
поскольку это все, что в основном происходит.
jQuery не предлагает пакетные загрузки, как это делают Prototype и MooTools, и собрать их самостоятельно, вероятно, будет сложно, потому что вам придется перебирать все зависимости вручную - и снова и снова для каждого нового выпуск jQuery.
Более того, в настоящее время размер полной библиотеки в сжатом виде составляет 24 КБ, я бы сказал, что размер не имеет большого значения. Библиотека загружается только один раз — если вы загружаете ее из CDN, она кэшируется централизованно, что делает ее возможной даже для медленных модемных соединений.