Что такое jquery?

Зачем современную веб-разработку так усложнили? Часть 1

  • Перевод
  • Tutorial

Современная фронтенд-разработка оставляет полярные впечатления: одни её любят, другие презирают.
Я большая поклонница современной веб-разработки, хотя она мне напоминает некую «магию», со своими плюсами и минусами:

  • Когда вы поймёте, как использовать волшебные инструменты (babel! бандлеры! вотчеры! и так далее!), ваш рабочий процесс становится быстрым, мощным и восхитительным
  • Если вы не понимаете волшебные инструменты, всё ужасно запутанно
  • …и попытки освоить магию слишком часто неудачны, если вам кто-нибудь не поможет продраться через джунгли жаргона, преувеличений и устаревшей информации в интернете

События мыши

Название Описание
.click() Устанавливает обработчик «клика» мышью по элементу, 
либо, запускает это событие.
.dblclick() Устанавливает обработчик двойного «клика» мышью по 
элементу, либо, запускает это событие.
.hover() Устанавливает обработчик двух событий: 
появления/исчезновения курсора над элементом. 
.mousedown() Устанавливает обработчик нажатия кнопки мыши, либо, 
запускает это событие.
.mouseup() Устанавливает обработчик поднятия кнопки мыши, либо, 
запускает это событие.
.mouseenter() Устанавливает обработчик появления курсора в области 
элемента, либо, запускает это событие. Появление этого 
события, отработано лучше, чем стандартного mouseover.
.mouseleave() Устанавливает обработчик выхода курсора из области 
элемента, либо, запускает это событие. Появление этого 
события, отработано лучше, чем стандартного mouseout.
.mousemove() Устанавливает обработчик движения курсора в области 
элемента, либо, запускает это событие.
.mouseout() Устанавливает обработчик выхода курсора из области 
элемента, либо, запускает это событие.
.mouseover() Устанавливает обработчик появления курсора в области 
элемента, либо, запускает это событие.
.toggle() Поочередно выполняет одну из двух или более заданных 
функций, в ответ на «клик» по элементу.

Пример JSON JQuery.each()

У нас могут быть более сложные структуры данных, такие как массивы в массивах, объекты в объектах, массивы в объектах или объекты в массивах. Давайте рассмотрим, как jQuery find each может применяться в подобных сценариях:

var json = ;
$.each(json, function () {
   $.each(this, function (name, value) {
      console.log(name + '=' + value);
   });
});

Результат выполнения кода: red=#f00, green=#0f0, blue=#00f.

Мы обрабатываем структуру с помощью вложенного вызова each(). Внешний вызов обрабатывает массив переменной JSON, внутренний вызов обрабатывает объекты. В этом примере каждый jQuery each element имеет только один ключ. Но с помощью представленного кода может быть присвоено любое количество ключей.

8 – $(document).ready(fn)

Метод jQuery невероятно удобен. Он позволяет нам выполнять код сразу по завершению загрузки DOM.

Модерн

document.addEventListener('DOMContentLoaded', function() {
   // Наш код
});

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

Наследие

// http://dustindiaz.com/smallest-domready-ever
function ready(cb) {
   /in/.test(document.readyState) // in = loadINg
      ? setTimeout('ready('+cb+')', 9)
      : cb();
}
 
ready(function() {
   // Получаем нужное из DOM
});

Решение для обратной совместимости — каждые 9 миллисекунд мы проверяем значение . Если возвращается “loading”, то документ все еще не загружен полностью (). Как только значение будет равно “complete,” выполнится возвратная функция.

Ожидание готовности DOM-модели

Библиотека jQuery предлагает свой способ регистрации события загрузки страницы. Соответствующий код представлен в примере ниже:

В этом сценарии мы передаем переменную document функции $() в качестве аргумента и вызываем метод ready(), передавая ему функцию, которую хотим выполнить после окончания загрузки и готовности DOM к работе. Можете поместить этот элемент script в любое место документа, будучи уверенным в том, что jQuery не допустит преждевременного выполнения функции.

Функция function(), передаваемая методу ready(), будет вызвана лишь после загрузки документа, но не раньше, чем завершится построение DOM.

Часто совершают ошибку, опуская в этой магической формуле ключевое слово function, определяющее следующий за ним блок инструкций как анонимную функцию, и передавая методу ready() простую последовательность инструкций JavaScript. Это не сработает. Инструкции будут выполнены браузером сразу же после их синтаксического разбора, а не после того, как DOM-дерево будет готово к использованию. В этом позволяет убедиться следующий пример:

Здесь метод ready() вызывается дважды: первый раз — с использованием ключевого слова function, а второй — с передачей обычной инструкции JavaScript в качестве аргумента. В обоих случаях вызывается функция countImgElements(), возвращающая общее количество элементов img в DOM. Загрузив документ, вы получите в окне консоли следующий результат:

Как видите, выполнение инструкции без ключевого слова function происходит при загрузке документа еще до того, как браузер обнаружит в нем элементы img и создаст соответствующие DOM-объекты.

Использование альтернативной нотации

При желании можете передать свою функцию в качестве параметра непосредственно $-функции jQuery. При таком способе записи вызова результат будет тем же, что и в случае вызова $(document).ready(). Описанный подход используется в примере ниже:

Задержка срабатывания события ready

Используя метод holdReady(), можно управлять моментом срабатывания события ready. Это может пригодиться в тех случаях, когда вы хотите использовать динамическую загрузку внешних ресурсов (эффективный, но пока что редко применяемый прием). Метод holdReady() следует вызывать дважды: до срабатывания события ready и когда DOM достигнет состояния готовности. Пример использования этой методики приведен в примере ниже:

Первой инструкцией в этом сценарии является вызов метода holdReady(). В качестве аргумента ему передается значение true, указывающее на необходимость задержки срабатывания события ready. Далее мы определяем функцию, которая должна быть выполнена при срабатывании события ready (она содержит тот же набор инструкций, который использовался в предыдущей статье для изменения непрозрачности изображений, но оформленный в виде функции).

Наконец, мы используем метод setTimeout() для вызова функции по истечении 5 секунд. Эта функция содержит вызов метода holdReady() с аргументом false, указывающим jQuery на необходимость освобождения события ready для его последующей обработки. Конечный результат состоит в том, что событие ready срабатывает с задержкой в 5 секунд. В сценарий включены также отладочные инструкции, которые после загрузки документа в браузер выводят на консоль следующую информацию:

Метод holdReady() можно вызывать многократно, но количество вызовов с аргументом true должно совпадать с количеством вызовов с аргументом false, прежде чем будет запущено событие ready.

Синтаксис функции jQuery .each()

В следующем примере мы выбираем на веб-странице все элементы div и выводим индекс и идентификатор каждого из них. Возможный результат: “div0:header”, “div1:body”, “div2:footer”. В примере используется функция jQuery each(), а не вспомогательная:

// Элементы DOM
$('div').each(function (index, value) { 
  console.log('div' + index + ':' + $(this).attr('id')); 
});

В следующем примере продемонстрировано использование вспомогательной функции. В данном случае объект, для которого выполняется цикл, задается в качестве первого аргумента. В этом примере я покажу, как перебрать массив через цикл с помощью jQuery each function:

// Массивы
var arr = ;
$.each(arr, function (index, value) {
  console.log(value);
  
  // Выполнение останавливается после "три"
  return (value !== 'три');
});
// Результат: один два три

В последнем jQuery each примере я хочу представить циклы через свойства объекта:

// Объекты
var obj = {
   one: 1,
   two: 2,
   three: 3,
   four: 4,
   five: 5
};
$.each(obj, function (index, value) {
  console.log(value);
});
// Результат: 1 2 3 4 5

Все это сводится к формированию надлежащего обратного вызова. Контекст обратного вызова this будет равен второму аргументу, который является текущим значением. Но поскольку контекст всегда будет объектом, то простые значения должны быть «обернуты». Поэтому строгое равенство между значением и контекстом не может быть задано. Первый аргумент — текущий индекс, который является числом для jQuery each array или строкой (для объектов).

Изменение HTML контента элемента

Например, заменим содержимое элемента :

<ul>
  <li>молоко 1 литр</li>
  <li>яйца 2 шт.</li>
  <li>мука  270 гр.</li>
</ul>
...
<script>
  $('ul').html('<li>молоко 500 мл литр</li><li>яйца 3 шт.</li><li>мука  200 гр.</li>');
</script>

Если на странице будет несколько элементов , то данный метод заменит содержимое каждого из них.

Если необходимо изменить контент только у одного элемента на странице, то наиболее просто это сделать через .

<ul id="ingredients">
  ...
</ul>
...
<script>
  $('#ingredients').html('Новый HTML контент...');
</script>

Использование функции для замены HTML контента элемента:

<h2>Название 1...</h2>
<h2>Название 2...</h2>
<h2>Название 3...</h2>  
...
<script>  
$('h2').html(function(index, oldhtml) {
  // index – индекс элемента в выборке
  // oldhtml – контент элемента
  var newhtml = (index+1) + '. ' + oldhtml;
  return newhtml;
});
</script>

Например, изменим контент элементов (зачеркнём старый контент и добавим рядом новый):

<div class="number">75</div>
<div class="number">37</div>
<div class="number">64</div>
<div class="number">17</div>
<div class="number">53</div> 
...
<script>  
var newNumber = [];
for (var i = 0; i <= 4; i++) {
  newNumber = Math.floor(Math.random() * 99) + 1;
};
$('.number').html(function(index, oldhtml) {
  // index – индекс элемента в выборке
  // oldhtml – контент элемента
  // this – текущий элемент
  // изменим фон текущего элемента на случайный
  $(this).css('background-color','yellow');
  var newhtml = '<s>'+oldhtml+'</s> '+ newNumber;
  return newhtml;
});
</script>

Manipulation

  • #13232: In 2.0beta1, using html() function on a tbody selector yields insertion of new tbody
  • #13233: Unexpected behavior when iterating over and manipulating detached nodes in jquery 1.9
  • #13282: QtWebKit — TypeError: ‘’ is not a valid argument for ‘Function.prototype.apply’ (evaluating ‘elem.nodeType’)
  • #13596: .replaceWith should always remove the context set
  • #13721: remove(“:nth-child(1)”) works differently than filter(“:nth-child(1)”).remove()
  • #13722: .replaceWith argument handling is inconsistent with other manipulation methods
  • #13779: .remove() changed in beta3 – now remove nodes in reverse doc order

Использование условных шаблонов

Механизм шаблонов обеспечивает возможность динамического принятия решений относительно использования различных частей шаблона в зависимости от выполнения определенных условий. Для этого существуют дескрипторы `if` и {{/if}}, пример использования которых представлен в ниже:

Условие указывается в дескрипторе `if`, и часть шаблона, заключенная между этим дескриптором и дескриптором {{/if}}, будет использоваться, только если результат вычисления условного выражения окажется равным true. Если же этот результат равен false, то указанная часть шаблона игнорируется. В данном случае проверяется значение свойства stocklevel, и если оно равно нулю, то игнорируется весь шаблон flowerTmpl. Это означает, что отображаться будут лишь те продукты, которые имеются в наличии на складе, как показано на рисунке:

Более сложные условия можно задавать с помощью дескриптора `else`, позволяющего определить часть шаблона, которая должна использоваться в тех случаях, когда результатом вычисления выражения в дескрипторе `if` является false. Соответствующий пример приведен ниже:

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

Результат работы приведенного выше сценария представлен на рисунке:

link Downloading jQuery using Bower

jQuery is also registered as a package with Bower. You can install the latest version of jQuery with the command:

1

This will install jQuery to Bower’s install directory, the default being . Within you will find an uncompressed release, a compressed release, and a map file.

The jQuery Bower package contains additional files besides the default distribution. In most cases you can ignore these files, however if you wish to download the default release on its own you can use Bower to install jQuery from one of the above urls instead of the registered package. For example, if you wish to install just the compressed jQuery file, you can install just that file with the following command:

1

Что такое jQuery и её поддержка браузерами

jQuery — это быстрая, лёгкая и многофункциональная JavaScript библиотека, основанная на принципе «пиши меньше, делай больше».

Её создал Джон Резиг в начале 2006 года. В настоящее время jQuery разрабатывается и поддерживается распределенной группой разработчиков как проект с открытым исходным кодом.

Сейчас последней версией jQuery является 3.5.1. Она поддерживается во всех основных браузерах: Chrome, Firefox, Safari, Edge, Opera и Internet Explorer 9+.

Преимущества и недостатки jQuery

Преимущества, которые даёт нам библиотеки jQuery при её использовании для написания клиентских сценариев:

  • компактность кода. Позволяет писать код более компактно чем на чистом javaScript, т.е. за гораздо меньшее количество строк кода.
  • простой и понятный синтаксис. Значительно упрощает написание многих вещей, например, таких как манипулирование DOM элементами, обработку событий, добавление эффектов анимации на страницу, AJAX запросов и т.д.
  • кроссбраузерность. Код написанный на jQuery будет гарантированно работать во всех основных браузерах. В то время как код, написанный на чистом JavaScript надо будет однозначно проверять во всех браузерах. Т.к. некоторые фрагменты кода могут не поддерживаться и их реализацию для этих браузеров нужно будет выполнять как-то по-другому, или например, использовать полифиллы.
  • открытый код. Библиотека jQuery является полностью бесплатной как для личных, так и для коммерческих проектов.

Кроме преимуществ, приведённых выше, у библиотеки jQuery имеются конечно и недостатки.

К недостаткам jQuery можно отнести то, что она может немного увеличивать скорость загрузки веб-страницы (её сжатый размер составляет около 30КБ), а также немного снижать производительность выполнения кода, чем если он был бы написан на чистом JavaScript.

Статистика использования jQuery

Если перейти к статистике, то многие крупные компании, используют jQuery в своих приложениях и сайтах. При этом растущий тренд продолжается, несмотря на очень горячие дискуссии в ИТ сообществах на тему: «Стоит ли использовать jQuery или нет в 2021 году?»

Статистика использования jQuery 10k крупнейшими сайтами:

Минус: вы контролируете не всё

Если вам нужен мак­си­маль­ный кон­троль за всем, что про­ис­хо­дит на сай­те, то луч­ше исполь­зо­вать чистый JavaScript. В этом слу­чае вы пол­но­стью уве­ре­ны в том, как ведёт себя стра­ни­ца, и не зави­си­те от сто­рон­не­го кода.

Если исполь­зу­е­те ред­кий пла­гин, есть риск, что он может не рабо­тать настоль­ко надёж­но, как вам нуж­но. К тому же, не все сто­рон­ние пла­ги­ны так же хоро­шо опти­ми­зи­ро­ва­ны, как сам jQuery: в ито­ге у вас ради какого-то одно­го эффек­та или бло­ка на стра­ни­це появит­ся огром­ная биб­лио­те­ка, кото­рая будет всё страш­но замедлять.

Плюс: плагины на любой случай

Что бы вы ни хоте­ли сде­лать на веб-странице, ско­рее все­го, для это­го уже есть гото­вые пла­ги­ны на jQuery. Фор­мы под­пис­ки, всплы­ва­ю­щая рекла­ма, захват теле­фон­но­го номе­ра — всё это уже есть и доступ­но за пару команд.

Несколь­ко примеров:

Scrollpane — кроссбра­у­зер­ный скрол­бар любо­го эле­мен­та на странице;

jReject — про­ве­ря­ет, не уста­рел ли исполь­зу­е­мый браузер;

GridScrolling — нави­га­ция по сай­ту с помо­щью клавиш;

FlickerPlate — пла­гин для слай­де­ров с под­держ­кой сен­сор­ных экранов;

Animsition — созда­ние ани­ми­ро­ван­ной загруз­ки стра­ниц на сайте;

SlideBars — созда­ние адап­тив­но­го меню на сайте

и ещё тыся­чи гото­вых плагинов.

compare $(elA).compare(elB) -> Number

adds to compare the position of two nodes. It returns a number that represents a bitmask showing how they are positioned relative to each other. The following list shows the , the number and what it means for a call like :

  • -> : Elements are identical
  • -> 1: The nodes are in different documents (or one is outside of a document)
  • -> 2: #bar precedes #foo
  • -> 4: #foo precedes #bar
  • -> 8: #bar contains #foo
  • -> 16: #foo contains #bar

You can tell if precedes like:

This is useful to rapidly compare element positions which is common when widgets can reorder themselves (drag-drop) or with nested widgets (trees). In the following example, select two elements to see how they compare to each other and what bitmask the result represents:

Определение шаблона

Как вы, наверное, и сами догадываетесь, центральным элементом библиотеки шаблонов является шаблон данных (data template). Он представляет собой набор HTML-элементов, содержащих заполнители, которые соответствуют различным свойствам объектов данных. Шаблон для этого примера показан ниже:

Первое, на что следует обратить внимание, — это то, что шаблон помещается в элемент script, атрибуту type которого присваивается значение несуществующего типа — text/x-jquery-tmpl. Это сделано для того, чтобы браузер не пытался интерпретировать содержимое шаблона как обычную HTML-разметку

Хотя это и несущественно, но такой практики следует придерживаться, поскольку она чрезвычайно полезна и позволит вам избежать множества потенциальных проблем в будущем.

Второй момент, на котором я хочу заострить ваше внимание, — это то, что для присвоения имени шаблону, определенному в элементе script, используется атрибут id. В данном случае именем шаблона служит flowerTmpl

Чтобы применить к данным шаблон, необходимо знать его имя.

Содержимое шаблона будет применено ко всем объектам в массиве данных, что приведет к созданию набора HTML-элементов для каждого объекта. Вы видите, что структура шаблона в целом соответствует набору элементов, которые использовались в предыдущих статьях для представления различных видов цветочной продукции. Главное, чем они отличаются — это элементы кода выполняющие функции заполнителей (data placeholders).

В процессе обработки шаблона вместо каждого заполнителя подставляется значение свойства, взятое из текущего объекта. Например, для первого объекта массива вместо заполнителя ${product} будет подставлено значение свойства product, т.е. «astor». Таким образом, часть шаблона

<label for="${product}">${name}:</label>

преобразуется в следующий HTML-фрагмент:

<label for="astor">Астра:</label>

Подстановка значений — не единственное, что могут делать шаблоны. Другие их возможности обсуждаются далее.

Перемещения по дереву DOM

Название Описание
.children() Находит все дочерние элементы у выбранных элементов. 
При необходимости, можно указать селектор для 
фильтрации.
.closest() Находит ближайший, соответствующий заданному 
селектору элемент, из числа следующих: сам выбранный 
элемент, его родитель, его прародитель, и так далее, до 
начало дерева DOM.
.find() Находит элементы по заданному селектору, внутри 
выбранных элементов.
.next() Находит элементы, которые лежат непосредственно после 
каждого из выбранных элементов. 
.nextAll() Находит элементы, которые лежат после каждого из 
выбранных элементов.
.nextUntil() Находит элементы, которые лежат после каждого из 
выбранных, но не дальше элемента, удовлетворяющего 
заданному селектору.
.offsetParent() Возвращает ближайшего предка c позиционированием, 
отличным от static (позиционирование по умолчанию)
.parent() Находит родительские элементы у всех выбранных 
элементов
.parents() Находит всех предков у выбранных элементов, т.е. не 
только прямых родителей, но и прародителей, 
прапрародителей и так далее, до начало дерева DOM
.parentsUntil() Находит предков, как и .parents(), но прекращает поиск 
перед элементом, удовлетворяющим заданному селектору
.prev() Находит элементы, которые лежат непосредственно перед 
каждым из выбранных элементов
.prevAll() Находит элементы, которые лежат перед каждым из
выбранных элементов.
.prevUntil() Находит элементы, которые лежат перед каждым из 
выбранных, но не дальше элемента, соответствующего 
заданному селектору.
.siblings() Находит все соседние элементы (под соседними
понимаются элементы с общим родителем).

Выбор элементов

Одна из самых важных областей применения функциональности jQuery — это выбор элементов DOM. В качестве примера ниже показано, как осуществить выбор нечетных элементов img:

Чтобы выбрать элементы, вы просто передаете селектор функции $(). Библиотека jQuery поддерживает все множество CSS-селекторов, а также некоторые дополнительные селекторы, которые обеспечивают удобные возможности детализированного управления процессом выбора элементов. В данном примере используется псевдоселектор :odd, который выбирает нечетные элементы, соответствующие основной части селектора (в данном случае это селектор img, который выбирает все элементы <img>).

В случае использования селектора :odd отсчет элементов начинается с нуля, т.е. первый элемент является четным. Поначалу это может сбивать вас с толку. Наиболее полезные селекторы jQuery перечислены в таблице ниже:

Расширенные селекторы jQuery
Селектор Описание
:animated Выбирает все анимируемые в данный момент элементы
:contains(текст) Выбирает все элементы, содержащие указанный текст
:eq(n) Выбирает элемент с индексом n (индексы отсчитываются от нуля)
:even Выбирает все четные элементы (индексы отсчитываются от единицы)
:first Выбирает первый из подходящих элементов
:gt(n) Выбирает все элементы, индекс которых превышает n (индексы отсчитываются от нуля)
:has(селектор) Выбирает элементы, которые содержат хотя бы один элемент, соответствующий указанному селектору
:last Выбирает последний из подходящих элементов
:lt(n) Выбирает все элементы, индекс которых меньше n (индексы отсчитываются от нуля)
:odd Выбирает все нечетные элементы (индексы отсчитываются от единицы)
:text Выбирает все текстовые элементы

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

В jQuery определены также селекторы, позволяющие выбирать элементы в соответствии с их типом:

Расширенные селекторы типов, определенные в jQuery
Селектор Описание Соответствующий элемент html
:button Выбирает все элементы типа button <input type=»button» value=»Input Button»>
:checkbox Выбирает все элементы типа checkbox <input type=»checkbox»>
:file Выбирает все элементы типа file <input type=»file»>
:header Выбирает все элементы заголовков <h1>, <h2> и т.д.
:hidden Выбирает все скрытые элементы <input type=»hidden»>
:image Выбирает все элементы input для изображений <input type=»image»>
:input Выбирает все элементы input
:parent Выбирает все элементы, являющиеся родительскими по отношению к другим элементам
:password Выбирает все элементы, являющиеся паролями <input type=»password»>
:radio Выбирает все элементы типа radio <input type=»radio»>
:reset Выбирает все элементы типа reset <input type=»reset»>
:selected Соответствует всем выбранным элементам
<select>
    <option>Option<option/>
</select>
:submit Выбирает все элементы типа submit <input type=»submit»>
:visible Выбирает все видимые элементы

Вычисление выражений

Объекты данных можно использовать не только для получения значений свойств. Если поместить между двумя фигурными скобками выражение JavaScript, то движок шаблонов вычислит его и вставит в сгенерированную шаблоном HTML-разметку. Соответствующий пример приведен ниже:

В этом шаблоне значение атрибута value элемента input устанавливается на основании значения свойства stocklevel с помощью тернарного условного оператора. Выражение, заключенное в фигурные скобки, играет ту же роль, какую играло бы записанное вместо него непосредственное значение свойства. Если значение свойства stocklevel больше нуля, то значение value устанавливается равным 1, в противном случае — 0.

Вид полученной страницы в окне браузера представлен на рисунке ниже. Значение stocklevel, большее нуля, установлено для всех цветов, кроме пионов:

Рассмотренный пример иллюстрирует основную схему работы с шаблонами: данные объединяются с шаблоном для получения DOM-объектов, которые затем добавляются в документ с использованием основной функциональности jQuery. Для генерации содержимого можно использовать как непосредственно заданные значения, так и вычисляемые выражения.

Как скачать jQuery

Для загрузки нам доступны 2 версии: полная и slim. Отличается slim от полной только тем, что в ней отсутствует часть модулей, а именно ajax и effects. Если функции входящие в эти модули нужны, то тогда следует выбрать полную версию. В противном случае – slim.

Кроме этого, каждая из них доступна нам как в сжатом (с суффиксом ) так и в несжатом виде.

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

На продакшене лучше применять сжатый вариант jQuery (с расширением ). Он меньше весит, и, следовательно, быстрее загружается

А это очень важно для производительности сайта

Уменьшение объема JavaScript кода библиотеки jQuery осуществляется за счёт минимизации. Минимизация – это процесс, который заключается в удалении из исходного кода всего лишнего (комментариев, незначащих пробелов, переносов строк, символов табуляции) и замене имен функций и переменных на более короткие.

Кроме этого, существуют разные ветки jQuery: 1.x, 2.x и 3.x.

jQuery 1.x следует использовать если нужна поддержка IE 6 – 8.

jQuery 2.x построено на том же API, что 1.x. Но имеет меньший размер и более высокую производительность. Это было достигнуто благодаря тому, что из неё был удалён устаревший код, необходимый для поддержки IE 6 – 8. Таким образом 2.x можно использовать только в том случае, если вам не нужна поддержка этих старых браузеров.

jQuery 3.x – последняя ветка (3.5.1 – последняя версия). В большинстве случаев рекомендуется выбирать её, если конечно вам не нужна поддержка IE 6 – 8. В отличие от предыдущих веток она имеет множество улучшений (поддержку промисов, работу с анимацией через и др.) и исправлений. Кроме этого, она доступна как в полном формате, так и .

После того как вы определись какой вариант библиотеки вам нужен, его необходимо загрузить.

Для скачивания jQuery с официального сайта нажмите правой кнопкой мыши на нужную ссылку и выберите пункт «Сохранить ссылку как…».

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

Загрузка jQuery с использованием CDN

Вместо того чтобы хранить библиотеку jQuery на своем сервере, можете воспользоваться одной из публично доступных сетей дистрибуции контента (Content Distribution Network — CDN), в которых хранится jQuery. CDN — это географически распределенная серверная сеть, обеспечивающая доставку файлов конечному пользователю с ближайшего сервера.

Существуют две причины, по которым имеет смысл использовать CDN:

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

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

Используя CDN, вы должны быть твердо уверены в надежности ее оператора. Вы должны быть уверены в том, что пользователь получит именно те файлы, на которые рассчитывает, и что служба будет оставаться всегда доступной. Google и Microsoft также предоставляют бесплатные услуги CDN по доставке библиотеки jQuery (равно как и других популярных библиотек JavaScript). Обе компании имеют богатейший опыт бесперебойного предоставления услуг, и от них вряд ли можно ожидать самовольного внесения каких-либо изменений в библиотеку jQuery.

Подробнее о службе Microsoft можно узнать по такому адресу: asp.net/ajaxlibrary/cdn.ashx. Ниже приведен пример подключения библиотеки jQuery через службу Google:

Подход, основанный на использовании CDN, невыгоден в случае приложений, доставляемых пользователям по локальной сети, поскольку он приведет к тому, что все серверы будут вынуждены обращаться в Интернет для получения библиотеки jQuery, а не к локальному серверу, который, как правило, находится ближе и в состоянии обеспечить более быструю доставку файлов при одновременной экономии полосы пропускания.

Работа с атрибутами и свойствами

Название Описание
.attr() возвращает/изменяет (в зависимости от числа параметров) 
значение атрибута у элементов на странице
.removeAttr() удаляет атрибут у элементов на странице
.prop() возвращает/изменяет (в зависимости от числа параметров) 
значение заданного свойства у элементов на странице
.removeProp()  удаляет заданное свойство у элементов на странице
.addClass()  добавляет класс элементам на странице
.removeClass()  удаляет класс(ы) у элементов на странице
.toggleClass() изменяет наличие класса у элементов на противоположное 
(добавляет/удаляет)
.hasClass(clName) проверяет наличие заданного класса хотя бы у одного из 
выбранных элементов
.val() возвращает/изменяет (в зависимости от числа параметров) 
значение атрибута value у элементов на странице

jQuery Core — All 3.x Versions

  • jQuery Core 3.6.0 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.5.1 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.5.0 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.4.1 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.4.0 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.3.1 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.3.0 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.2.1 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.2.0 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.1.1 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.1.0 — uncompressed, minified, slim, slim minified
  • jQuery Core 3.0.0 — uncompressed, minified, slim, slim minified

Essential Git

As the source code is handled by the Git version control system, it’s useful to know some features used.

Cleaning

If you want to purge your working directory back to the status of upstream, the following commands can be used (remember everything you’ve worked on is gone after these):

git reset --hard upstream/main
git clean -fdx

Rebasing

For feature/topic branches, you should always use the flag to , or if you are usually handling many temporary «to be in a github pull request» branches, run the following to automate this:

git config branch.autosetuprebase local

(see for more information)

Handling merge conflicts

If you’re getting merge conflicts when merging, instead of editing the conflicted files manually, you can use the feature
. Even though the default tool looks awful/old, it’s rather useful.

The following are some commands that can be used there:

  • — automerge as much as possible
  • — jump to next merge conflict
  • — change the order of the conflicted lines
  • — undo a merge
  • — mark a block to be the winner
  • — mark a line to be the winner
  • — save
  • — quit
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector