jQuery долгое время была стандартом для упрощения работы с DOM, обработкой событий и AJAX. Однако современные браузеры и стандарты JavaScript обеспечивают нативные возможности, которые раньше требовали сторонних библиотек. Основные причины миграции:
querySelector, fetch, classList и
другие методы позволяют работать с DOM и сетью без дополнительных
библиотек.В jQuery селекторы использовались следующим образом:
$('.item').hide();
$('#menu').addClass('active');
Эквивалент на чистом Jav * aScript:
document.querySelectorAll('.item').forEach(el => el.style.display = 'none');
document.getElementById('menu').classList.add('active');
Особенности:
querySelectorAll возвращает NodeList, а не
jQuery-объект, поэтому методы перебора применяются через
forEach.querySelector или
getElementById используются напрямую.jQuery предоставляла удобные методы:
$('#button').on('click', function() {
alert('Нажато!');
});
Без jQuery:
document.getElementById('button').addEventListener('click', function() {
alert('Нажато!');
});
addEventListener поддерживает несколько обработчиков на
один элемент.this, что часто облегчает код.jQuery облегчала работу с AJAX через метод $.ajax:
$.ajax({
url: '/api/data',
method: 'GET',
dataType: 'json',
success: function(response) {
console.log(response);
},
error: function(err) {
console.error(err);
}
});
Современный эквивалент с использованием fetch:
fetch('/api/data')
.then(response => {
if (!response.ok) throw new Error('Ошибка сети');
return response.json();
})
.then(data => console.log(data))
.catch(err => console.error(err));
fetch возвращает промис и обрабатывает ошибки через
.catch.JSON.stringify или
URLSearchParams для отправки данных.jQuery предоставляла простые методы: .fadeIn(),
.fadeOut(), .slideUp(),
.slideDown().
На нативном JS можно использовать CSS-транзиции или Web Animations API:
const element = document.querySelector('.box');
element.style.transition = 'opacity 0.5s';
element.style.opacity = 0; // имитация fadeOut
element.animate() или CSS-классы с ключевыми кадрами.transitionend или
промисы.jQuery упрощала работу с классами:
$('#item').toggleClass('active');
В чистом JS:
document.getElementById('item').classList.toggle('active');
Атрибуты:
$('#link').attr('href', 'https://example.com');
Стандартный метод:
document.getElementById('link').setAttribute('href', 'https://example.com');
getAttribute и setAttribute
позволяют гибко работать с любыми атрибутами элементов.dataset используется для работы с data-*
атрибутами.jQuery автоматически предоставляла удобные методы для перебора:
$('.item').each(function(index, element) {
console.log(index, element);
});
В нативном JS:
document.querySelectorAll('.item').forEach((element, index) => {
console.log(index, element);
});
forEach и for...of
обеспечивает читаемый и лаконичный код.NodeList в массив через
Array.from, чтобы использовать все методы массивов
(map, filter, reduce)..html() → element.innerHTML.text() → element.textContent.val() → element.value.append() → element.append или
element.appendChild.prepend() → element.prependПример замены .append():
const container = document.getElementById('list');
const newItem = document.createElement('li');
newItem.textContent = 'Новый элемент';
container.append(newItem);