jQuery обычно предлагается в качестве хорошей отправной точки для начинающих веб-разработчиков. Многие изучают jQuery еще до того, как начали изучать ванильный JavaScript.
Почему? Отчасти это связано с популярностью jQuery, но в основном из-за ошибочной веры, которую имеют более опытные разработчики: поскольку jQuery прост для них, он также прост для начинающих.
JQuery предлагает краткость, а не упрощение
JQuery определенно избавляет от горя старых проблем с браузером. Но в остальном, это не так уж много для инкапсуляции сложности DOM API или JavaScript.
О, я знаю, что печатать гораздо проще,$(‘#id’).click(function(event) {..});
чем делать это с ванильным JS. Но для написания этого кода вам все равно нужно понимать то же самое: выбор узла DOM, обработку событий, обратные вызовы и так далее.
jQuery проще написать, если вы уже хорошо понимаете API DOM и JavaScript, но для новичков это не так просто.
Vue.js
Vue.js — горячая новая структура недели. Но это не без оснований. Я бы сказал, что из многих его сильных сторон простота обучения — номер один. Простота встроена в его дизайн.
Я утверждаю, что новичок может создать тривиальное веб-приложение с помощью Vue и понять, как работает их код, гораздо лучше, чем с помощью jQuery.
Итак, давайте создадим действительно простое приложение с jQuery и Vue.js и посмотрим, что из этого выйдет на свет. Это приложение будет подсчитывать количество нажатий кнопки и отображать это число на экране.
Реализация с помощью jQuery
Вот типичная реализация с jQuery:
<div id="output"></div>
<button id="increment">Increment</button>
<script>
var counter = 0;
$(document).ready(function() {
var $output = $('#output');
$('#increment').click(function() {
counter++;
$output.html(counter);
});
$output.html(counter);
});
</script>
Это выглядит просто, но учтите, что это только потому, что вы просматриваете его глазами опытного разработчика Понять, что делает этот код, на самом деле довольно сложно. Рассматривать:
- Первое , что вы обычно набираете JQuery сценария
$(document).ready(function() { .. });
. В этих 30 с чем-то символах вас атакуют четыре жесткие концепции: выбор узла DOM, обработка событий, процесс загрузки документа и обратные вызовы. Если вы не получаете все эти вещи, то вы не понимаете код, который вы только что написали. - Чтобы приступить к выбору элемента DOM для работы, вам понадобится конструктор jQuery
$('...')
. К сожалению, вы не можете точно указать, какие узлы вы получите, вместо этого вам нужно создать соответствующий фильтр с помощью CSS3-подобного селектора, и то, что вы фактически получите, будет определено при его запуске. Чтобы сделать это хорошо, вам нужно будет создать мысленную копию вашего DOM и смоделировать, что произойдет, если вы запустите свой фильтр против него. И так как каждый метод, который вы пишете, обновляет DOM, вы должны аналогичным образом обновлять вашу интеллектуальную DOM и рассматривать, будут ли ваши фильтры работать должным образом. - Для некоторых положительных новостей в jQuery есть только один шаблон: выберите что-то, а затем сделайте что-то для этого выбора с помощью метода из API. Проблема с этим шаблоном состоит в том, что теперь у нас есть плоский одномерный API с более чем 100 методами, которые делают все от AJAX до итерации массива. Невозможно сделать столько имен методов достаточно описательными, чтобы различать, что они делают, и что они возвращают. Удачи новичку, понимающему, что действительно делают цепные методы.
Реализация с помощью Vue.js
Вот типичная реализация с Vue.js:
<div id="app">
<div>{{ counter }}</div>
<button v-on:click="increment">Increment</button>
</div>
<script>
new Vue({
el: '#app',
data: {
counter: 0
},
methods: {
increment() {
this.counter++;
}
}
});
</script>
Vue позаботился о многих болевых точках, поднятых выше о jQuery:
- Не нужно беспокоиться о готовых обратных вызовах DOM, эта сложность заключена в капсулу. Хуки жизненного цикла Vue обеспечат более совершенный контроль, если и когда это необходимо.
- Очевидная связь установлена между свойством data
counter
и DOM-узлом, где он рендерится. Нет необходимости в умственном DOM, вы можете увидеть его на странице и быть уверенным, что обновление счетчика не приведет к неожиданным путям с вашим DOM из-за неправильного выбора узла. - У нас нет двусмысленных API-методов для поиска или запоминания. Различные функциональные возможности хорошо организованы и стратифицированы в объекте конструктора Vue или применяются непосредственно к узлам DOM в шаблоне с помощью директив, что дает им больше контекста для понимания.
Завершение
jQuery проще, только если вы уже понимаете JavaScript и DOM API. Это не так для начинающих. JQuery не проще, просто сокращенно.
Vue, с другой стороны, имеет простоту, встроенную в его дизайн. Многие сложные части DOM API были хорошо инкапсулированы. Новички смогут писать код, который они на самом деле понимают, и когда им нужно будет делать более сложные вещи, он будет им доступен.
Поэтому в следующий раз, когда кто-то спросит вас, чему он должен научиться как начинающему веб-разработчику, возможно, jQuery — это не главное.