Jquery

Js jquery: jQuery API Documentation

Содержание

Как отказаться от jQuery в современном фронтенде: опыт команды GitHub

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

Зачем jQuery был нужен раньше?

jQuery 1.2.1 вошёл в число зависимостей GitHub в конце 2007 года. Это произошло за год до того, как Google выпустил первую версию браузера Chrome. На тот момент не было общепринятого способа обращаться к элементам DOM с помощью CSS-селектора, не было стандартного способа добавить анимацию к стилю элемента, а интерфейс XMLHttpRequest, предложенный Internet Explorer, как и многие API, был плохо совместим с браузерами.

С jQuery стало гораздо проще управлять DOM, создавать анимации и делать AJAX-запросы. У веб-разработчиков появилась возможность создавать более современные, динамические сайты, которые выделялись среди остальных. Самое главное, все функции JavaScript, проверенные в одном браузере с помощью jQuery, как правило, работали и в других браузерах. На заре GitHub, когда большинство его функций только обретали форму, появление jQuery позволило небольшой команде разработчиков быстро создавать прототипы и представлять новые функции без необходимости подстраивать их отдельно под каждый браузер.

Простой интерфейс jQuery также послужил основой для создания библиотек, которые в будущем стали компонентами остальной части фронтенда GitHub.com: pjax и facebox.

Веб-стандарты в последующие годы

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

Когда очередь дошла до jQuery, мы сравнили его с развивающимся веб-стандартом в браузерах и поняли, что:

  • Шаблон $(selector) можно легко заменить на querySelectorAll();
  • Переключение CSS-классов теперь можно осуществить с помощью Element. classList;
  • CSS теперь поддерживает создание анимации в таблицах стилей, а не в JavaScript;
  • $.ajax-запросы можно выполнять с помощью Fetch Standard;
  • Интерфейс addEventListener() достаточно стабилен для кроссплатформенного использования;
  • Шаблон делегирования событий легко инкапсулировать с помощью легковесной библиотеки;
  • С эволюцией JavaScript часть синтаксического сахара jQuery устарела.

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

$('.js-widget')
  .addClass('is-loading')
  .show()

Такой синтаксис прост в написании, однако по нашим стандартам не очень хорошо передаёт намерения автора. Сколько элементов js-widget, по его задумке, должно быть на странице: один или больше? А если мы обновим разметку страницы и случайно оставим имя класса js-widget, будет ли выброшено исключение, которое сообщит нам, что что-то пошло не так? По умолчанию jQuery молча пропускает всё выражение, когда нет совпадений по начальному селектору; однако для нас такое поведение было больше багом, нежели фичей.

Наконец, нам хотелось начать аннотировать типы с Flow, чтобы проводить статическую проверку типов во время сборки, и мы пришли к выводу, что синтаксис цепочек плохо поддаётся статическому анализу, так как почти каждый результат вызова метода jQuery одного и того же типа. Из возможных вариантов мы выбрали именно Flow, так как тогда такие возможности, как режим @flow weak, позволили нам начать прогрессивно и эффективно применять типы к кодовой базе, которая по большей части была нетипизированной.

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

Постепенный переход

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

  • Начали отслеживать количество вызовов jQuery на строку кода и следили за графиком на протяжении времени, чтобы убедиться, что он либо не меняется, либо падает, но не растёт.
  • Отказались от использования jQuery в новом коде. Чтобы достичь этого с помощью автоматизации, мы создали eslint-plugin-jquery, который проваливал CI-тесты при попытке использовать возможности jQuery вроде $.ajax.
  • В старом коде появилось много нарушений правил eslint, которые мы пометили с помощью специальных правил eslint-disable в комментариях. Для того, кто будет это читать, такие комментарии должны были служить явным сигналом того, что здесь не отражаются наши текущие методы написания кода
  • Мы написали бота, который при отправке pull request’а оставлял комментарий, сигнализирующий нашей команде каждый раз, как кто-то хотел добавить новое правило eslint-disable. Таким образом мы могли провести ревью кода на ранней стадии и предложить альтернативы.
  • Большая часть старого кода была явно связана с внешними интерфейсами jQuery-плагинов pjax и facebox, поэтому мы оставили их интерфейсы почти без изменений, в то время как изнутри заменили их реализацией на чистом JS. Наличие статической проверки типов вселило в нас уверенность в проводимом рефакторинге.
  • Много старого кода было связано с rails-behaviors, нашим адаптером для Ruby on Rails, таким образом, что он присоединял обработчик жизненного цикла AJAX к определённым формам:
    // УСТАРЕВШИЙ ПОДХОД
      $(document).on('ajaxSuccess', 'form.js-widget', function(event, xhr, settings, data) {
        // вставка данных ответа куда-нибудь в DOM
      })

    Вместо того чтобы переписывать все эти вызовы согласно новому подходу, мы решили использовать ложные события жизненного цикла ajax*, и формы продолжали отправлять данные асинхронно, как и раньше; только теперь изнутри использовался fetch().

  • Мы поддерживали свою сборку jQuery, из которой убирали ненужные нам модули и заменяли более лёгкой версией. Например, после избавления от всех jQuery-специфичных CSS-псевдоселекторов вроде :visible или :checkbox мы смогли убрать модуль Sizzle; а когда мы заменили $.ajax-вызовы на fecth(), мы смогли отказаться от модуля AJAX. Мы убивали двух зайцев разом: уменьшали время выполнения JavaScript, параллельно гарантируя то, что никто не напишет код, который будет пытаться использовать удалённую функциональность.
  • Глядя на статистику нашего сайта, мы старались прекратить поддержку Internet Explorer настолько быстро, насколько это возможно. Как только использование определённой версии IE падало ниже определённого порога, мы прекращали её поддержку и фокусировались на более современных браузерах. Отказ от поддержки IE 8-9 на раннем этапе позволил нам использовать многие нативные возможности браузеров, которые в противном случае было бы сложно «заполифиллить».
  • В рамках нашего усовершенствованного подхода к написанию фронтенда GitHub мы сосредоточились на использовании обычного HTML по-максимуму, добавляя JavaScript в качестве последовательного улучшения. В итоге даже те формы и другие элементы интерфейса, которые были улучшены с помощью JS, как правило, могли работать даже с выключенным в браузере JavaScript. В некоторых случаях нам даже удалось удалить определённую устаревшую функциональность вместо её переписывания на чистом JS.

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

Custom Elements: пользовательские элементы

Одна технология, наделавшая шуму в последние годы, — Custom Elements: библиотека компонентов, встроенная в браузер, что означает отсутствие необходимости для пользователя качать, парсить и компилировать дополнительные байты фреймворка.

Мы создали несколько пользовательских элементов на основе спецификации v0 с 2014 года. Однако, поскольку стандарты в то время постоянно менялись, мы сильно в это не вкладывались. А начали только с 2017 года, когда была выпущена спецификация Web Components v1, реализованная как в Chrome, так и в Safari.

Во время перехода с jQuery мы искали структуры, которые можно было бы извлечь в качестве пользовательских элементов. Например, мы преобразовали код facebox, использованный для отображения модальных диалогов, в элемент <details-dialog>.

Наша общая философия прогрессивного улучшения относится и к пользовательским элементам. Это значит, что мы стараемся хранить как можно больше контента в разметке и только добавлять поведение поверх неё. Например, <local-time> по умолчанию показывает исходную временную метку, но с улучшением может переводить время в местный часовой пояс, а <details-dialog>, расположенный внутри элемента <details>, интерактивен даже без JavaScript, но может быть улучшен до расширенных возможностей доступа.

Вот пример того, как можно реализовать элемент <local-time>:

// Элемент local-time отображает время в текущем
// часовом поясе и местоположении пользователя.
//
// Пример:
//   Sep 6, 2018
//
class LocalTimeElement extends HTMLElement {
  static get observedAttributes() {
    return ['datetime']
  }

  attributeChangedCallback(attrName, oldValue, newValue) {
    if (attrName === 'datetime') {
      const date = new Date(newValue)
      this.textContent = date.toLocaleString()
    }
  }
}

if (!window.customElements.get('local-time')) {
  window.LocalTimeElement = LocalTimeElement
  window.customElements.define('local-time', LocalTimeElement)
}

Один из аспектов Web Components, который мы очень хотим перенять, — Shadow DOM. У Shadow DOM есть потенциал для раскрытия множества возможностей для веба, однако он также усложняет полифиллинг. Так как его полифиллинг на данный момент приведёт к снижению производительности даже для кода, который управляет частями DOM, не относящихся к веб-компонентам, для нас нецелесообразно использовать его в продакшне.

Полифиллы

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

Смотрите также: «Фундаментальные принципы объектно-ориентированного программирования на JavaScript»

Перевод статьи «Removing jQuery from GitHub.com frontend»

Подключение свежей версии JQuery в WordPress

А вообще, про подключение CSS и JS в WordPress на моём сайте есть отдельный видеоурок.

Наверное вы знаете, что на некоторых сайтах можно встретить JQuery версии 1.4.2, на некоторых 1.4.4, а иногда даже 1.6.4 (это самая последняя версия на момент написания поста).

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

Как же сделать так, чтобы на сайте автоматически подключалась всегда только самая новая версия?

Проще простого, самая последняя версия JQuery всегда находится по адресу:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Если валидация будет ругаться на эту строчку кода, знайте, она написана в HTML5 🙂

А вот пример подключения JQuery к WordPress. Учтите, это будет работать только в том случае, если в вашей теме присутствуют wp_head() и wp_footer().

add_action( 'init', 'true_jquery_register' );
 
function true_jquery_register() {
	if ( !is_admin() ) {
		wp_deregister_script( 'jquery' );
		wp_register_script( 'jquery', ( 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery. min.js' ), false, null, true );
		wp_enqueue_script( 'jquery' );
	}
}

Вставьте этот код в файл functions.php. Он находится в папке с вашей текущей темой.

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Переход с jQuery на Vue.js

Об авторе

Сара Дрезнер — заслуженный спикер и senior разработчик в Microsoft, автор статьей о трюках и хитростях CSS.

Нельзя просто так упустить все интриги, возросшие вокруг существующий JavaScript — фреймворков, но также не стоит забывать, что они явно не являются универсальными и каждый тип проекта требует что-то «свое». Возможно, вы не захотите устанавливать большое количество различных дополнений, чтобы просто реализовать небольшую абстракцию. Возможно, адаптация проекта под новые системы сборки, различные методы деплоя будет означать большое количество времени и усилий, которые вы будете не в состоянии включить в прайс клиенту. Возможно, вы не хотите писать в HTML JavaScript. Список может расти до бесконечности.

Что многие люди могут не знать, так это то, что вы можете легко внедрить Vue.js в ваш проект точно так же, как вы внедряете jQuery. Не нужно ничего перестраивать. Vue достаточно гибкий — в том плане, что вы можете его использовать прямо в HTML.

Итак, представим, что ваш код имеет следующий вид:

Вы можете в буквальном смысле изменить скрипт-тег и продолжить использовать HTML & JS точно так же, как вы использовали его до этого. Вам не нужно ничего переписывать. Вам не нужно интегрировать веб-паки. И вам определенно не нужно устанавливать никаких криповых чудовищ.

Вы можете заменить тэги и оставить разметку «как есть». Что радует, так это несказанная простота, гибкость и адаптируемость Vue.js, что вы можете увидеть на протяжении чтения данной статьи. Что же касательно размера, тут нас тоже ждет приятная особенность: всего лишь 86 КБ для версии 2.5.3 и 87 для более новой версии 3.2.1.

Давайте рассмотрим некоторые наиболее распространенные примеры использования нового фреймворка и убедимся в его неоспоримых преимуществах.

Перехват пользовательского ввода

Наиболее распространенным примером использования JavaScript  является отлавливание введенной пользователем в веб-формы информации. В нашем примере для упрощения мы не будем рассматривать комплексные формы, но для понимания этого будет целиком достаточно.

Чтобы отловить информацию, вводимую пользователем, мы можем сделать следующее:

Я использую этот пример, потому что он наглядно демонстрирует некоторые сильные стороны Vue. js. Он реализует особенности react, что делает его очень чуствительным в плане изменений. Демонстрацию вы можете увидеть, когда попытаетесь ввести что-то. Как можно заметить, вся информация обновляется практически мгновенно.

Вы также можете заметить это и в версии с JQuery — контролируя элементы DOM-дерева и работая с событиями, вызываемыми при изменении содержания его элементов.

В версии Vue.js мы сохраняем состояние элемента. Если более детально, то мы привязываем к нашему конечному скрипту DOM-элемент напрямую. Особенность в том, что даже в случае изменения структуры DOM-дерева и HTML в целом, конкретный DOM-элемент будет надежно привязан к нашему Vue.js — событию. Де-факто, на вводе мы используем атрибут v-model, тем самым обозначая хранение информации этого поля в JavaScript.

Однако это далеко не единственный способ хранения состояния. Потому двигаемся дальше.

Хранение введенных данных в рамках индивидуального события

Особенность работы Vue.js заключается в том, что нам не нужно думать об особенностях реализации конкретного DOM-события. По сути, мы уже знаем, что мы желаем «перехватить». Мы просто указываем событию, на который из элементов срабатывать. Тогда как с использованием JQuery мы жестко привязываемся к структуре DOM и прочим DOM-событиям. Увидеть разницу мы сможем в следующем примере:

В этой версии JQuery был упрощен, так как нам не нужно было отлавливать события при каждом нажатии клавиши, но в то же время все остальные условия соблюдены. Наш код в jQuery также будет подобен этому:

«Отловите элемент, просмотрите, что он делает, перехватывайте изменения, обрабатывайте полученные данные.»

Сравним: во Vue мы контролируем все изменения DOM-дерева. Мы привязываемся к конкретным элементам. По сути, мы имеем небольшую абстракцию под названием v-model.lazy. Vue тепер знает, что сохранять состояние данных до того, как были произведены первые изменения, нельзя. Отлично!

Классы

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

Опять же, что мы здесь можем видеть, так это то, что в версии с jQuery мы храним состояние объекта в DOM-дереве. Элемент имеет свой класс, jQuery принимает решение на базе существующего класса, проверяющего привязку к DOM. В версии с Vue мы храним условие и применяем к нему стили в зависимости от состояния этого условия. Мы не обращаемся к DOM за этой информацией, мы храним ее сами.

Мы храним active в данных, кнопка изменяет состояние условия и, в зависимости от условия, применяется к примеру .red. Даже состояния доступа, aria-pressed, сохраняются гораздо быстрее, так как у нас нет необходимости хранить все в vue-скрипте. Мы можем изменять состояние напрямую при помощи слова active.

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

Скрытие и отображение

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

Оба фреймворка успешно справляются с поставленной задачей, но все же и здесь есть свои причины, почему я отдаю предпочтение Vue.js. Vue обладает инструментом под названием Vue devtolls. Это не то же самое, что Chrome devtools, но когда я их использую, я получаю больше специфической информации, связанной непосредственно с Vue.js

И в jQuery и в Vue элементы успешно скрываются и появляются вновь. Но что, если что-то пойдет не так? Что, если что-то в нашем коде работает не так, как это было задумано? В случае с jQuery для отладки мы бы скорее всего использовали console.log и были бы таковы.

Это все, конечно, хорошо, но в случае с Vue он сам нам предоставит всю необходимую информацию о нем самом. На пикче ниже мы можем увидеть, как элемент скрывается\появляется и как изменяется его состояние в специальном окне. Если DOM по какой-то причине не будет работать так, как мы от него ожидаем, вся необходимая информация будет легко отображена во Vue.

Что еще мне нравится, так это то, что v-if очень удобно принять в других случаях. Я могу использовать v-show, если вещь будет скрыватся и отображатся часто: v-if полностью «демонтирует» элемент, тогда как v-show просто изменит видимость. Это достаточно важно, так как позволяет улучшить производительность. Я легко могу установить целые каскады условий, в то время как повторить подобное с jQuery — слегка затруднительно.

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

Передача формы

Так уж исторически сложилось, что отправка формы посредством Ajax является наиболее «каноничным» примером использования jQuery. А потому мы просто обязаны рассмотреть альтернативу. На самом деле, Vue не обладает встроенными вещами навроде Ajax. Обычно вместо этого здесь используется Axious (js-библиотека для генерации http-запросов).

Этот пример будет несколько более сложным, чем предыдущие. Мы собираемся произвести следующее:

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

Здесь за управление классом клавиши отвечают строки 2-10. Похоже на то, что мы делали ранее.  Мы передаем в параметр под названием событие форму и говорим event.preventDefault(), дабы запретить перезагрузку страницы. После чего мы собираем всю информацию с формы и отправляем через Ajax запрос (.done()).

В версии Vue мы биндим поля через v-model. Мы проверяем имена для связки с классом. Вместо передачи информации и загрузки страницы event.preventDefault(), нам всего лишь нужно написать @submit.prevent в нашем элементе формы. Для передачи запроса же мы используем Axious.

Конечно, так же можно произвести и валидацию, отлавливание ошибок, тесты и так далее. Но для понимания логики работы с Vue, как мне кажется, достаточно и этих небольших примеров.

И в заключение

Нет ничего плохого в том, чтобы продолжать использовать jQuery. Цель этой статьи — всего лишь показать, что Vue так же хорош в качестве некой такой абстракции для небольших сайтов. Этот фреймворк оптимален в размерах, прост  в работе и освоении, достаточно тривиален и прекрасно интегрируется в HTML & JS без необходимости перестраивать приложение.

Благодаря гибкости Vue передача кода на стадию билда и общая компонентная структура не являются чем-то сложным. На самом деле — это очень даже весело. Попробуйте сами! Вы можете скаффолдить весь Vue на уровне продакшена просто при помощи пары терминальных команд. Подобным образом вы можете работать с отдельными компонентами, не трогая HTML & JS. Вам не нужно менять конфигурацию вашего веб-пака, разве что вы не захотите сделать что-то специфическое.

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

Удачи в разработке!

Автор перевода: Евгений Лукашук

Источник

Фальшивая версия плагина jQuery Migrate заразила множество сайтов — «Хакер»

Исследователи  Денис Синегубко и Адриан Стоян обнаружили на десятках сайтов фейковые версии файлов jQuery, имитирующие плагин jQuery Migrate для WordPress, работающий на 7,2 млн сайтов. Такие подделки содержат обфусцированный код для загрузки малвари, и пока неясно, как эти скрипты попадают на страницы скомпрометированных ресурсов.

We lately see many websites with replaced . /wp-includes/js/jquery/jquery-migrate.min.js
It loads malware from hxxps://stick.travelinskydream[.]ga/analytics.js pic.twitter.com/3W7nSoCsLm

— Denis (@unmaskparasites) March 30, 2021

Чтобы затруднить обнаружение, эти вредоносные файлы заменяют легитимные файлы по адресу ./wp-includes/js/jquery/, где WordPress обычно хранит файлы jQuery. Так, файлы jquery-migrate.js и jquery-migrate.min.js содержат обфусцированный код, дополнительно загружающий странный  файл analytics.js с малварью внутри.

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

Издание Bleeping Computer пишет, что на самом деле этот скрипт, конечно, не имеет никакого отношения к аналитике. Например, в коде содержатся ссылки на/wp-admin/user-new.php: страницу администрирования WordPress, предназначенную для создания новых пользователей. Более того, код обращается к  переменной _wpnonce_create-user, которую WordPress использует для обеспечения защиты от CSRF.

Также «аналитический скрипт» может направлять посетителей на страницы с поддельными опросами, сайты фейковой техподдержки, вынуждать подписаться на спам или загрузить опасные расширения для браузера.

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

Начало работы с jQuery

Существует несколько способов начать использовать jQuery на своем сайте:

  • Скачать библиотеку с официального сайта jQuery.com
  • Включить jQuery по CDN, вроде Google

Скачивание библиотеки jQuery

На официальном сайте jQuery для скачивания доступно две версии библиотеки:

  • Для готовых проектов (production) – эта версия предназначена для уже отлаженных и работающих сайтов. Она минифицирована и сжата, что позволяет ускорить ее загрузку.
  • Для разработки (development) – это для тестирования и разработки новых скриптов (код не сжат и содержит комментарии).

Обе версии библиотеки можно скачать на сайте jQuery.com.

Библиотека jQuery — это один файл JavaScript, который подключается в HTML теге <script> (обратите внимание, что тег <script> должен располагаться внутри тега <head>):


<head>
<script src="//msiter.ru/jquery-3.4.0.min.js"></script>
</head>

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

Удивляетесь, почему в теге <script> мы не используем атрибут type=»text/javascript»? В HTML5 этого не требуется. JavaScript — скриптовый язык по умолчанию в HTML5 и во всех современных браузерах!

jQuery CDN

Если вы не хотите скачивать и размещать библиотеку jQuery на сервере своего сайта, то вы можете подключить ее с CDN (англ. Content Delivery Network – Сеть доставки содержимого).

Библиотеку jQuery можно подключить с сети Google и Microsoft.

Google CDN:


<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
</head> 

Microsoft CDN:


<head>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.0.min.js"></script>
</head> 

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

Синтаксис jQuery Вверх Учебник jQuery для начинающих

Переход с jQuery на Vue.

js Зачем, как и что из этого вышло

Опубликовано: 25 Июн 2019

Вернуться в блог

Меня зовут Сергей, я работаю в Студии Флаг с 2017 года и, когда я пришел, состояние фронтенда оставляло желать лучшего.

Введение

Меня зовут Сергей, я работаю в Студии Флаг с 2017 года и, когда я пришел, состояние фронтенда оставляло желать лучшего. Если CSS хоть как-то собирался, был разбит на модули, то на некоторых проектах весь JavaScript хранился в одном файле длиной несколько тысяч строк, не минифицировался, и периодически встречались комментарии типа «Не лезь, оно тебя сожрет». В другом месте JS-функция иногда возвращала “trulio” вместо true. Большая часть кодовой базы была написана на jQuery, что тоже не упрощало работу.

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

Постепенно, мы занялись созданием сборки фронтенда, начали с минификации (сжатия) и транспиляции (трансформации кода таким образом, чтобы он работал в старых браузерах) JavaScript с помощью популярного сборщика Gulp. Позже стали разбивать код на модули. С 2017 года мы начинали постепенно внедрять php-фреймворк Laravel. Кстати, создатели Laravel (Taylor Otwell) и Vue.js (Evan You) много общаются и выступают на конференциях друг у друга.

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

Почему Vue

Vue.js – это прогрессивный фреймворк для создания пользовательских интерфейсов. Создателем Vue.js является Evan You, бывший сотрудник Google и Meteor Dev Group. Начал он разрабатывать фреймворк в 2013-м, а в феврале 2014-го состоялся первый публичный релиз.

Почему мы выбрали именно его?

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

Во-вторых, Vue довольно легко интегрируется с Laravel, backend-фреймворком, который мы используем.

В-третьих, он подходит для постепенного внедрения. Постепенно изучая фреймворк, мы могли начинать использовать его в существующих проектах, которые не были написаны на Vue.js с нуля.

Немаловажным является то, что фреймворк имеет доступную документацию(в том числе на хорошем русском языке).
Vue.js появился позже Angular и React, и, как обещали разработчики, взял лучшее от обоих. На тот момент он уже начал обгонять React по звездочкам на GitHub, и в рейтинге любви разработчиков имел позиции не ниже, чем React. Совокупность этих факторов привела к выбору Vue.js, который мы начали внедрять с начала 2018 года, и еще ни разу не пожалели об этом.

Использование Vue.js

Для изучения Vue.js требуется базовое знание HTML, CSS, JavaScript, желательно знание стандарта ES6 и выше. Vue поддерживает все современные браузеры и даже Internet Explorer 9-11 и весит всего около 20 кб (min + gzip).

Для старта простого проекта на Vue.js достаточно скачать JS-файл и подключить его на страницу с помощью тега <script>. Будет зарегистрирована глобальная переменная Vue. Также существует Vue CLI – инструмент, с помощью которого можно быстро развернуть проект, и использовать все продвинутые возможности Vue (о них расскажу далее) без потери времени на настройку конфигов систем сборки фронтенда. Мы же на своих проектах используем Webpack + Laravel Mix (пакет для Laravel, позволяющий быстро настраивать Webpack).

Основные концепции

Основными концепциями Vue являются:

  • конструктор
  • компоненты
  • директивы
  • переходы

Конструктор

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

Компоненты

Ключевое правило при разработке сложных вещей: «Никогда не делайте сложные вещи». Если что-то становится сложным – разбиваем это на части попроще и связываем их наиболее очевидным способом. Любой сложный интерфейс нужно делить на компоненты – сущности, для которых мы можем максимально однозначно и понятно указать, что это такое и что оно умеет делать.

Компоненты помогают расширить основные html элементы и внедрить переиспользуемый код. По сути, компоненты — повторно используемые части UI. На этапе проектирования мы разбиваем наше приложение на независимые части и получаем древовидную структуру компонентов. В примере ниже можно увидеть пример Vue-компонента — счетчика кликов, который можно вставить на страницу несколько раз и все реализации этого счетчика будут работать независимо друг от друга.

jQuery

Для jQuery тоже можно найти плагины, для реализации компонентного подхода, однако их почти никто не использует на практике.

Директивы

Директивы используются для добавления дополнительной функциональности html-элементам. Все директивы имеют префикс «v-». С их помощью можно добавлять обработчики событий, управлять отображением элементов, передавать данные и многое другое.

Например, в примере ниже элементу добавляется класс “active”, если переменная isActive возвращает “true”.

jQuery

В jQuery для реализации подобной функциональности пришлось бы добавить класс или id к этому элементу (хорошо, если он еще будет с префиксом js—), после этого обратиться к этому элементу и при изменении переменной isActive добавлять или убирать класс.

Переходы

Vue дает возможность самым разным образом анимировать переходы при обновлении объектов DOM, а также при их добавлении и удалении. Его инструменты дают возможность:

  • автоматически применять CSS-классы для анимаций и переходов
  • интегрировать сторонние библиотеки CSS-анимаций, такие как Animate.css
  • использовать JavaScript для работы с DOM напрямую в хуках переходов
  • интегрировать сторонние библиотеки JavaScript-анимаций, такие как Velocity.js
jQuery

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

Отладка

Для отладки используется расширение для браузера vue-devtools, которое позволяет видеть компонентную структуру проекта. Это расширение позволяет отслеживать состояние каждого компонента, реактивно менять данные в нем, изменяя его состояние. Также в нем присутствуют возможности для отладки Vue Router и Vuex, о которых расскажу чуть позже.

Скриншот интерфейса Vue-devtools представлен ниже.

jQuery

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

Однофайловые компоненты

Для того, чтобы проект было легко масштабировать и отлаживать рекомендуется использовать однофайловые компоненты Vue, которые являются одной из киллер-фич фреймворка. При такой организации кода каждый компонент – это отдельный файл, который имеет три части: разметку, скрипт и стили. Это очень удобно – видеть всю логику компонента в одном файле. Причем писать можно на любом удобном вам препроцессоре (SASS, PostCSS, …) и языке, компилирующимся в JS (CoffeeScript, TypeScript). На иллюстрациях ниже можно увидеть пример такого компонента. В примере сперва идет HTML-разметка, затем JavaScript и, наконец, стили CSS. Все рядом, в одном файле, удобнее уже некуда!

jQuery

В jQuery такой реализации компонентного подхода нет.

Vuex

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

Для решения этой проблемы Vue предлагает Vuex. Vuex – это паттерн и библиотека управления состоянием для приложений на Vue.js. Он позволяет хранить данные в одном месте в виде JSON-объекта, что упрощает работу при разработке больших приложений.

jQuery

Если снова вспомнить про jQuery, то подобных встроенных инструментов управления состоянием приложения он не имеет.

SPA

Для создания SPA (Single Page Application) предусмотрен модуль VueRouter. SPA – это веб-приложение, работающее на одной странице. На SPA-сайте при переходах между URL-адресами страница не перезагружается, а обновляется только то, что должно обновиться. Большая часть работы сайта производится на стороне клиента, а если нужно получить данные с сервера, то это обычно делается с помощью ajax.

В обычных сайтах очень часто можно встретить загрузку одного и того же содержимого. Например, шапка сайта, футер, меню и другие элементы, которые не меняются от страницы к странице, тем не менее, каждый раз загружаются с сервера. С использованием SPA подхода такой проблемы просто не будет, т.к. контент будет подгружаться по мере необходимости, что значительно повысит скорость работы приложения. Пример SPA-сайта: https://meduza.io/

Vue Router имеет мощные возможности по управлению роутингом приложения, и при этом доступную документацию. Она глубоко интегрируется с Vue.js и позволяет легко создавать SPA-приложения. Включает следующие возможности:

  • Вложенные маршруты/представления;
  • Модульная конфигурация маршрутизатора;
  • Доступ к параметрам маршрута, query, wildcards;
  • Анимация переходов представлений на основе Vue.js;
  • Удобный контроль навигации;
  • Автоматическое проставление активного CSS класса для ссылок;
  • Режимы работы HTML5 history или хэш, с автопереключением в IE9;
  • Настраиваемое поведение прокрутки страницы.

Есть инструменты и для серверного рендеринга HTML страниц.

jQuery

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

Vuetify

Для того, чтобы быстро собрать приложение можно использовать набор готовых компонентов – Vuetify. Он соответствует концепции дизайна Material Design. С его помощью можно как использовать некоторые UI-элементы (селекты, датапикеры), так и готовые темы интерфейсов.
Ниже можно увидеть форму авторизации Vuetify.

jQuery

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

Заключение

Таким образом, Vue предоставляет обширные возможности для разработчиков. С ним очень легко начать работать, даже если до этого вы не использовали JavaScript-фреймворки и постепенно двигаться от простого к сложному на реальных проектах. При использовании однофайловых компонентов вы получаете приложение с чистым кодом, разбитым на модули, которое легко масштабировать.

Вы можете начать создавать SPA и удобно управлять состоянием с помощью Vue Router и Vuex, а также использовать готовый набор компонентов Vuetify. А еще у Vue есть набор фирменных эмоджи! Мы работаем с Vue.js больше года, и за это время убедились, что как фреймворк, он удовлетворяет все наши потребности и стимулирует изучать новое и двигаться вперед.

Всем Vue!



Последние записи блога


Please enable JavaScript to view the comments
powered by Disqus.

8.8. Работа с javascript/jQuery в Drupal 8. Что такое behaviors?

Для начала давайте вернемся к тому как подключать кастомные javascript файлы к нашей теме. В файле . libraries.yml нужно подключить js:

global-styling:
  version: 1.x
  css:
    theme:
      css/style.css: {}
      css/print.css: { media: print }
  js:
    js/custom.js: {}
  dependencies:
    — core/jquery
    — core/jquery.once

Важно соблюдать отступы, чтобы он был в два пробела. Итак, мы подключили файл js/custom.js. Но этого не достаточно чтобы у нас работал jQuery. Дело в том что ядро друпала не требует jQuery и jQuery не подключается. Его нужно подключать отдельно:

dependencies:
  — core/jquery

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

dependencies:
  — core/jquery
  — core/jquery.once

Дело в том, что мы будем писать код javascript, который будет вызывать друпалом несколько раз по разным событиям. Поэтому нам будет нужен этот метод .once().

Теперь давайте добавим немного кода в файл custom. js:

(function ($) {
  Drupal.behaviors.myModuleBehavior = {
    attach: function (context, settings) {
      $(context).find(‘.click-me’).once(‘myCustomBehavior’).click(function () {
        alert(‘Hello, World!’);
      });
    }
  };
})(jQuery);

Давайте разберем по порядку, что это все значит.

(function ($) {
 
})(jQuery);

Мы оборачиваем код jQuery в такую конструкцию, потому что jQuery в друпале запускается в режиме .noConflict(). Это нужно для того чтобы использовать знак доллара $, и это не конфликтовало с другими javascript фреймворками Prototype, MooTools. Вряд ли вам придется встретиться с этими фреймворками, jQuery плотно занял лидирующие позиции. Но в эту конструкцию вам придется оборачивать весь jQuery-код.

(function ($) {
  Drupal.behaviors.myModuleBehavior = {
    attach: function (context, settings) {
 
    }
  };
})(jQuery);

Вот мы и подошли к behavior’ам. Если вы пишите jQuery код в друпале, вам нужно его во-первых обернуть в function($), а во-вторых в behavior. Имя behavior’а должно быть уникальным, у нас в примере myModuleBehavior, но вам нужно для каждого behavior писать свое имя:

(function ($) {
  Drupal.behaviors.myModuleBehavior = {
    attach: function (context, settings) {
 
    }
  };
 
  Drupal.behaviors.productPageBehavior = {
    attach: function (context, settings) {
 
    }
  };
})(jQuery);

Используйте camelCase для наименования behavior’ов. Behavior вызывается при загрузке страницы, на каждый AJAX-запрос. Таким образом, когда на сайт подгружается новый контент и встраивается в структуру существующего сайта, то вызывается код из behavior, каждый раз. Это значительно отличается от конструкции:

$(document).ready(function () {
  // Do some fancy stuff.
  // Не используйте такой код в Drupal 8 (да и в Drupal 7 тоже).
});

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

Если вы начали использовать behavior’ы и заметили, что у вас происходят странные события с сайтом, например через jQuery блок добавляется несколько раз:

(function ($) {
  Drupal. behaviors.myModuleBehavior = {
    attach: function (context, settings) {
      // Behavior вызывается несколько раз на странице, не забывайте использовать функцию .once().
      $(‘.inner’).append(‘<p>Test</p>’);
    }
  };
})(jQuery);

При каждом ajax-запросе у вас будет добавлять еще один параграф Test. Поэтому нужно добавить функцию .once():

(function ($) {
  Drupal.behaviors.myModuleBehavior = {
    attach: function (context, settings) {
      // Behavior вызывается несколько раз на странице, не забывайте использовать функцию .once().
      $(‘.inner’).once(‘add-paragraph’).append(‘<p>Test</p>’);
    }
  };
})(jQuery);

Еще одна фича behavior это переменная context. Каждый раз когда на сайт добавляется новый контент при загрузке страницы или через ajax, то весь новый контент находится в переменной context. Таким образом нам не нужно проходить все DOM дерево, после каждого ajax запроса, чтобы навесить событие на селектор. Достаточно пройтись только по context’у:

(function ($) {
  Drupal.behaviors.myModuleBehavior = {
    attach: function (context, settings) {
      // Behavior вызывается несколько раз на странице, не забывайте использовать функцию .once().
      $(context).find(‘.inner’).once(‘add-paragraph’).append(‘<p>Test</p>’);
    }
  };
})(jQuery);

Теперь добавление параграфа написано в правильном друпал стиле. Конечно, вы можете использовать старую запись с document.ready(), но тогда это будет работать только один раз и медленнее чем через behavior’ы.

Если у вас возникнут вопросы по jQuery/javascript или предложения по дополнительным темам пишите в комментариях.

Загрузить jQuery | jQuery

Ссылка

Загрузка jQuery

Доступны сжатые и несжатые копии файлов jQuery. Несжатый файл лучше всего использовать во время разработки или отладки; сжатый файл экономит полосу пропускания и повышает производительность в производственной среде.
Вы также можете загрузить файл исходной карты для использования при отладке сжатого файла.
Файл карты — , а не , необходимый для запуска jQuery пользователями, он просто улучшает работу отладчика разработчика.Начиная с jQuery 1.11.0 / 2.1.0 комментарий // # sourceMappingURL не включается в сжатый файл.

Чтобы загрузить эти файлы локально, щелкните ссылку правой кнопкой мыши и выберите в меню «Сохранить как …».

ссылка jQuery

Для получения помощи при обновлении jQuery см. Руководство по обновлению, наиболее подходящее для вашей версии.
Мы также рекомендуем использовать плагин jQuery Migrate.

Загрузите сжатую рабочую версию jQuery 3.6.0

Загрузите несжатый, разрабатываемый jQuery 3.6.0

Загрузите файл карты для jQuery 3.6.0

Вы также можете использовать тонкую сборку, которая исключает модули ajax и эффектов:

Загрузите сжатую рабочую версию jQuery 3.6.0 slim build

Загрузите несжатую, разрабатываемую jQuery 3. 6.0 slim build

Загрузите файл карты для jQuery 3.6.0 slim build

Сообщение в блоге jQuery 3.6.0 с примечаниями к выпуску

Ссылка

Загрузка jQuery с помощью npm или Yarn

jQuery зарегистрирован как пакет на npm.Вы можете установить последнюю версию jQuery с помощью команды командной строки npm:

В качестве альтернативы вы можете использовать команду интерфейса командной строки Yarn:

Это установит jQuery в каталог node_modules . В пределах node_modules / jquery / dist / вы найдете несжатый выпуск, сжатый выпуск и файл карты.

Ссылка

Загрузка jQuery с помощью Bower

jQuery также зарегистрирован как пакет с Bower. Вы можете установить последнюю версию jQuery с помощью команды:

Это установит jQuery в установочный каталог Bower, по умолчанию bower_components bower_components / jquery / dist / вы найдете несжатый выпуск, сжатый выпуск и файл карты.

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

ссылка Плагин jQuery Migrate

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

Существует две версии Migrate. Первый поможет вам обновить ваш pre-1.9 код jQuery для jQuery 1.9 до 3.0. Вы можете получить эту версию здесь:

Загрузите сжатую рабочую версию jQuery Migrate 1.4.1

Загрузить несжатый, разрабатываемый jQuery Migrate 1.4.1

Вторая версия помогает вам обновить код для работы на jQuery 3.0 или выше, после того, как вы использовали Migrate 1.x и обновились до jQuery 1.9 или выше :

Загрузите сжатую рабочую версию jQuery Migrate 3.3.2

Загрузите разрабатываемый несжатый файл jQuery Migrate 3.3,2

link Кроссбраузерное тестирование с помощью jQuery

Обязательно протестируйте веб-страницы, использующие jQuery, во всех браузерах, которые вы хотите поддерживать. На сайте ресурсов для разработчиков Microsoft доступны виртуальные машины для тестирования множества различных версий Internet Explorer. Более старые версии других браузеров можно найти на oldversion.com.

link Предварительные сборки jQuery

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

Загрузить незавершенную сборку jQuery

link Использование jQuery с CDN

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

связывает CDN jQuery, предоставляемый StackPath

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

Чтобы использовать jQuery CDN, просто укажите файл в теге скрипта непосредственно из домена jQuery CDN.Вы можете получить полный тег скрипта, включая атрибут целостности субресурса, посетив https://code.jquery.com и щелкнув версию файла, которую вы хотите использовать. Скопируйте и вставьте этот тег в свой HTML-файл.

Начиная с jQuery 1.9 файлы исходных карт доступны в jQuery CDN. Однако, начиная с версии 1.10.0 / 2.1.0, сжатый jQuery больше не включает комментарий исходной карты в копиях CDN, поскольку требует, чтобы несжатый файл и файл исходной карты располагались в том же месте, что и сжатый файл.Если вы поддерживаете локальные копии и можете контролировать расположение всех трех файлов, вы можете добавить комментарий исходной карты к сжатому файлу для упрощения отладки.

Чтобы увидеть все доступные файлы и версии, посетите https://code.jquery.com

link Другие CDN

Следующие CDN также содержат сжатые и несжатые версии выпусков jQuery. Начиная с jQuery 1. 9 они также могут размещать файлы исходных карт; проверьте документацию сайта.

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

Ссылка

О коде

jQuery предоставляется по лицензии MIT.

Код размещен и разработан в репозитории jQuery GitHub. Если вы заметили некоторые области кода, которые можно улучшить, не стесняйтесь обсуждать их на форуме «Разработка ядра jQuery». Если вы хотите принять участие в разработке jQuery, посетите наш сайт участников для получения дополнительной информации.

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

Ссылка

Сборка из Git

Примечание: Чтобы просто использовать последнюю незавершенную версию jQuery, попробуйте предварительную сборку jQuery, описанную выше.

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

Если у вас есть доступ к Git, вы можете подключиться к репозиторию здесь:

Вы также можете проверить и собрать конкретную версию jQuery на GitHub:

Файл README для конкретной версии будет содержать инструкции по созданию этой версии, поскольку процесс со временем изменился.


ссылка Прошлые выпуски

Все прошлые выпуски можно найти на jQuery CDN.

jQuery Начало работы


Добавление jQuery на ваши веб-страницы

Есть несколько способов начать использовать jQuery на вашем веб-сайте. Вы можете:

  • Загрузите библиотеку jQuery с jQuery.com
  • Включить jQuery из CDN, например Google

Загрузка jQuery

Для загрузки доступны две версии jQuery:

  • Производственная версия — это для вашего действующего веб-сайта, потому что он был уменьшен и сжат
  • Версия для разработки — это для тестирования и разработки (несжатый и читаемый код)

Обе версии можно загрузить с jQuery.com.

Библиотека jQuery представляет собой отдельный файл JavaScript, и вы ссылаетесь на него с помощью тега HTML

Совет: Поместите загруженный файл в тот же каталог, что и страницы, на которых вы хотите его использовать.


jQuery CDN

Если вы не хотите загружать и размещать jQuery самостоятельно, вы можете включить его из CDN (сети доставки контента).

Google - это пример того, кто размещает jQuery:

Google CDN:



Попробуй сам "

Одно большое преимущество использования размещенного jQuery от Google:

Многие пользователи уже загрузили jQuery от Google при посещении
другой сайт.В результате он будет загружен из кеша при посещении вашего сайта, что приведет к сокращению времени загрузки.
Кроме того, большинство CDN гарантируют, что после того, как пользователь запросит у него файл, он будет обработан.
с ближайшего к ним сервера, что также сокращает время загрузки.

JavaScript · Bootstrap v5.0

Индивидуальный или составной

Плагины

могут быть включены по отдельности (с использованием отдельных js / dist / *. Js в Bootstrap) или все сразу с использованием начальной загрузки .js или уменьшенный bootstrap. min.js (не включая оба).

Если вы используете сборщик (Webpack, Rollup…), вы можете использовать файлов /js/dist/*.js , готовых для UMD.

Использование Bootstrap в качестве модуля

Мы предоставляем версию Bootstrap, построенную как ESM ( bootstrap.esm.js и bootstrap.esm.min.js ), которая позволяет использовать Bootstrap в качестве модуля в вашем браузере, если ваши целевые браузеры поддерживают его. .

  
  

Несовместимые плагины

Из-за ограничений браузера некоторые из наших плагинов, а именно плагины Dropdown, Tooltip и Popover, не могут использоваться в теге
фрагмент на вашей веб-странице.

Мы рекомендуем загружать библиотеки из CDN через HTTPS, даже если у вас
собственный веб-сайт использует только HTTP. В настоящее время производительность высокая, а кеширование
работает точно так же. Файлы CDN обслуживаются
CORS
а также
Время-Разрешить
заголовки и разрешено кешировать на 1 год.

ЦезийJS

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/cesiumjs/1.78/Build/Cesium/Cesium.js ">
сайт:
github.com/CesiumGS/cesium
версий:
1,78

D3.js

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/d3js/6.7.0/d3.min.js">
сайт:
d3js.org
версий:
6.7.0, 6.6.2, 6.6.1, 6.6.0, 6.5.0, 6.3.1, 6.2.0, 6.1.1, 5.16.0, 5.15.1, 5.15.0, 5.14.2, 5.12.0, 5.11.0, 5.9.7, 5.9.2, 5.9.0, 5.8.0, 5.7.0, 4.13.0, 3.5.17

Додзё

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/dojo/1.13.0/dojo/dojo.js">
сайт:
dojotoolkit.org
версий:
1.13.0,
1.12.3, 1.12.2, 1.12.1,
1.11.5, 1.11.4, 1.11.3, 1.11.2, 1.11.1,
1.10.9, 1.10.8, 1.10.7, 1.10.6, 1.10.5, 1.10.4, 1.10.3, 1.10.2, 1.10.1, 1.10.0,
1.9.11, 1.9.10, 1.9.9, 1.9.8, 1.9.7, 1.9.6, 1.9.5, 1.9.4, 1.9.3, 1.9.2, 1.9.1, 1.9.0,
1.8.14, 1.8.13, 1.8.12, 1.8.11, 1.8.10, 1.8.9, 1.8.8, 1.8.7, 1.8.6, 1.8.5, 1.8.4, 1.8.3, 1.8. 2, 1.8.1, 1.8.0,
1.7.12, 1.7.11, 1.7.10, 1.7.9, 1.7.8, 1.7.7, 1.7.6, 1.7.5, 1.7.4, 1.7.3, 1.7.2, 1.7.1, 1.7. 0,
1.6.5, 1.6.4, 1.6.3, 1.6.2, 1.6.1, 1.6.0,
1.5.6, 1.5.5, 1.5.4, 1.5.3, 1.5.2, 1.5.1, 1.5.0,
1.4.8, 1.4.7, 1.4.6, 1.4.5, 1.4.4, 1.4.3, 1.4.1, 1.4.0,
1.3.2, 1.3.1, 1.3.0,
1.2.3, 1.2.0,
1.1.1

Ext Core

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js">
сайт:
sencha.com/products/extcore
версий:
3.1.0, 3.0.0

Hammer.JS

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/hammerjs/2.0.8/hammer.min.js">
сайт:
hammerjs.github.io
версий:
2.0.8

Неопределенная наблюдаемая

фрагмент:


сайт:
https://github.com/material-motion/indefinite-observable-js
версий:
2.0.1,
1.0.1

jQuery

3.x фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js ">
2.x фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js">
1.x фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
сайт:
jquery.com
версий:
3.6.0, 3.5.1, 3.5.0, 3.4.1, 3.4.0, 3.3.1, 3.2.1, 3.2.0, 3.1.1, 3.1.0, 3.0.0,
2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.4, 2.1.3, 2.1.1, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0. 0,
1.12.4, 1.12.3, 1.12.2, 1.12.1, 1.12.0, 1.11.3, 1.11.2, 1.11.1, 1.11.0, 1.10.2, 1.10.1,
1.10.0, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.2, 1.7.1, 1.7.0, 1.6.4, 1.6.3, 1.6. 2,
1.6.1, 1.6.0, 1.5.2, 1.5.1, 1.5.0, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0, 1.3.2, 1.3.1, 1.3. 0,
1.2.6, 1.2.3
примечание:
3.3.0, 2.1.2, 1.2.5 и 1.2.4 не размещены из-за их короткой и нестабильной жизни в дикой природе.

jQuery Mobile

фрагмент:
<ссылка rel = "stylesheet" href = "https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.css">
сайт:
jquerymobile.ком
версий:
1.4.5, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0
примечание:
Эта библиотека зависит от jQuery. Вы также должны загрузить jQuery перед загрузкой этого модуля.

jQuery UI

фрагмент:
<ссылка rel = "stylesheet" href = "https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
сайт:
jqueryui.com
версий:
1.12.1, 1.12.0,
1.11.4, 1.11.3, 1.11.2, 1.11.1, 1.11.0, 1.10.4, 1.10.3, 1.10.2,
1.10.1, 1.10.0, 1.9.2, 1.9.1, 1.9.0, 1.8.24, 1.8.23, 1.8.22, 1.8.21,
1.8.20, 1.8.19, 1.8.18, 1.8.17, 1.8.16, 1.8.15, 1.8.14, 1.8.13,
1.8.12, 1.8.11, 1.8.10, 1.8.9, 1.8.8, 1.8.7, 1.8.6, 1.8.5, 1.8.4,
1.8.2, 1.8.1, 1.8.0, 1.7.3, 1.7.2, 1.7.1, 1.7.0, 1.6.0, 1.5.3, 1.5.2
примечание:
Эта библиотека зависит от jQuery. Вы также должны загрузить jQuery перед
загрузка этого модуля. Версия 1.8.3 не размещается из-за ее короткого
life, а псевдоним 1.8.3 фактически загружает 1.8.4.

Движение материалов

фрагмент:


сайт:
https://github.com/material-motion/material-motion-js
версий:
0.1.0

MooTools

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/mootools/1.6.0/mootools.min.js">
сайт:
mootools.сеть
версий:
1.6.0, 1.5.2, 1.5.1, 1.5.0, 1.4.5, 1.4.4, 1.4.3,
1.4.2, 1.4.1, 1.4.0, 1.3.2, 1.3.1, 1.3.0, 1.2.5, 1.2.4,
1.2.3, 1.2.2, 1.2.1, 1.1.2, 1.1.1
примечание:
Для версий 1.5.1 и ранее имя файла минифицированной версии называется mootools-yui-compressed.js вместо mintools.min.js.

Myanmar Tools

фрагмент:
<скрипт src = "https: // ajax.googleapis.com/ajax/libs/myanmar-tools/1.2.1/zawgyi_detector.min.js ">
<скрипт src = "https://ajax.googleapis.com/ajax/libs/myanmar-tools/1.2.1/zawgyi_converter.min.js">
сайт:
https://github.com/google/myanmar-tools/
рекомендуемые версии:
1.2.1
все размещенные версии:
1.0.1
1.1.0
1.1,1
1.1.3
1.2.0
1.2.1

Опытный образец

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/prototype/1.7.3.0/prototype.js">
сайт:
prototypejs.org
версий:
1.7.3.0, 1.7.2.0, 1.7.1.0, 1.7.0.0, 1.6.1.0, 1.6.0.3, 1.6.0.2

скрипт.aculo.us

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js">
сайт:
script.aculo.us
версий:
1.9.0, 1.8.3, 1.8.2, 1.8.1
примечание:
Эта библиотека зависит от Prototype . Перед загрузкой этого модуля вы должны загрузить Prototype.

Shaka Player

фрагмент:




сайт:
https://github.com/google/shaka-player/
рекомендуемые версии:
3.1.0, 3.0.11, 2.5.22
все размещенные версии:
3.1.0, 3.0.11, 2.5.22, 3.0.10, 3.0.9, 2.5.21, 3.0.8, 2.5.20, 3.0.7, 2.5.19, 3.0.6, 2.5.18, 3.0 .5, 2.5.17, 3.0.4, 2.5.16, 3.0.3, 2.5.15, 3.0.2, 2.5.14, 3.0.1, 2.5.13, 3.0.0, 2.5.12, 2.5.11 , 2.5.10, 2.5.9, 2.5.8, 2.5.7, 2.5.6, 2.5.5, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.5.0-beta3, 2.5.0-beta2, 2.5.0-beta, 2.4.7, 2.4.6, 2.4. 5, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4.0, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.3.1, 2.3.0, 2.2.10, 2.2.9, 2.2.8, 2.2.7, 2.2.6, 2.2.5, 2.2.4, 2.2.1, 2.2. 0, 2.1.9, 2.1.8, 2.1.7, 2.1.6, 2.1.5, 2.1.4, 2.1.3, 2.1.2, 2.1.1, 2.1.0, 2.0.9, 2.0.8, 2.0.6, 1.6.5

SPF

фрагмент:
<скрипт src = "https: // ajax.googleapis.com/ajax/libs/spf/2.4.0/spf.js ">
сайт:
youtube.github.io/spfjs
версий:
2.4.0, 2.3.2, 2.3.1, 2.3.0, 2.2.0, 2.1.2, 2.1.1, 2.1.0, 2.0.1, 2.0.0

SWFObject

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js">
сайт:
github.com / swfobject / swfobject
версий:
2.2, 2.1

three.js

фрагмент:
<скрипт src = "https://ajax.googleapis.com/ajax/libs/threejs/r84/three.min.js">
сайт:
threejs.org
версий:
r84, r83, r82, r81, r80, r79, r78, r77, r76, r75, r74, r73, r72, r71, r70, r69, r68, r67, r49

Загрузчик веб-шрифтов

фрагмент>
<скрипт src = "https: // ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js ">
сайт:
github.com/typekit/webfontloader
версий:
1.6.26, 1.6.16, 1.5.18, 1.5.10, 1.5.6, 1.5.3, 1.5.2, 1.5.0

Поиск и устранение неисправностей

Видите устаревшую версию? Убедитесь, что вы не используете ссылки "автоматическая версия", например
/ jqueryui / 1 / ... , но вместо этого используйте URL-адреса, относящиеся к точным версиям.Из-за опасений по поводу кеширования и отсутствия совместимости даже между второстепенными версиями у нас есть
устарела и перестала обновлять псевдонимы автоматической версии некоторое время назад, поэтому они будут
навсегда ссылаться на старую версию (чтобы не нарушать работу существующих сайтов, которые все еще их используют).

Если возникнут проблемы:

js.jquery · PyPI

Скачать файлы

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

Файлы для js.jquery, версия 3.3.1
Имя файла, размер Тип файла Версия Python Дата загрузки Хеши
Имя файла, размер

js.jquery-3.3.1-py2.py3-none-any.whl

(301.9 кБ)

Тип файла
Колесо
Версия Python

py2.py3

Дата загрузки
Хеши

Вид

Имя файла, размер

js.jquery-3.3.1.tar.gz

(300,2 КБ)

Тип файла
Источник
Версия Python

Никто

Дата загрузки
Хеши

Вид

Lightbox2

Примеры

Два отдельных изображения

Набор из четырех изображений

Начало работы

  1. Загрузите zip-архив с последней версией (или любой предыдущей) со страницы Github Releases.

    Или установите с помощью npm:

      npm install lightbox2 --save  
  2. Откройте zip-файл и взгляните на баребоны, рабочий пример, который находится в папке / examples .

  3. Готовы установить лайтбокс на своей странице? Начните с включения Lightbox CSS и Javascript. Вы можете взять оба этих файла из папки / dist .

    • Включите CSS вверху страницы в свой тег :
         
    • Включите Javascript внизу страницы перед закрывающим тегом :
         
  4. Убедитесь, что jQuery, который требуется для Lightbox, также загружен.

    • Если вы уже используете jQuery на своей странице, убедитесь, что он загружен до лайтбокса.js . Требуется jQuery 1.7 или выше, а поскольку используется модуль эффектов, тонкая сборка jQuery не поддерживается.
    • Если вы в настоящее время не используете jQuery, я создал упакованный файл, который включает как Lightbox, так и jQuery. Включите dist / js / lightbox-plus-jquery.js вместо lightbox.js .
  5. Убедитесь, что четыре изображения, загруженные lightbox.css , находятся в правильном месте.Вы можете получить изображения из папки / dist / images .

Инициализировать с помощью HTML

  • Отдельные изображения. Добавьте атрибут data-lightbox к любой ссылке на изображение, чтобы включить лайтбокс. В качестве значения атрибута используйте уникальное имя для каждого изображения. Например:
       

    Дополнительно:

    • Добавьте атрибут data-title , если вы хотите показать заголовок.
    • Добавьте атрибут data-alt , если вы хотите установить атрибут alt для связанного изображения.
  • Наборы изображений. Если у вас есть группа связанных изображений, которые вы хотите объединить в набор, используйте одно и то же значение атрибута data-lightbox для всех изображений. Например:
       

Опции

Если вы хотите изменить какие-либо параметры по умолчанию, вызовите метод параметра.

Опция По умолчанию Описание
alwaysShowNavOnTouchDevices ложь Если true, левая и правая стрелки навигации, которые появляются при наведении курсора мыши при просмотре наборов изображений, всегда будут видны на устройствах, поддерживающих сенсорный ввод.
альбом Этикетка "Изображение% 1 из% 2" Текст, отображаемый под заголовком при просмотре набора изображений.Текст по умолчанию показывает номер текущего изображения и общее количество изображений в наборе.
отключить прокрутку ложь Если true, запретить прокрутку страницы при открытом лайтбоксе. Это работает за счет переполнения настроек, скрытого на теле.
fadeDuration 600 Время, необходимое для того, чтобы контейнер лайтбокса и наложение появлялись и исчезали, в миллисекундах.
fitImagesInViewport правда Если true, измените размер изображений, которые будут выходить за пределы области просмотра, чтобы они точно помещались внутри нее. Это избавляет пользователя от необходимости прокручивать, чтобы увидеть все изображение.
imageFadeDuration 600 Время, необходимое для постепенного появления изображения после загрузки, в миллисекундах.
макс. Ширина Если установлено, ширина изображения будет ограничена этим числом в пикселях.Соотношение сторон не будет сохранено.
maxHeight Если установлено, высота изображения будет ограничена этим числом в пикселях. Соотношение сторон не будет сохранено.
позиция Сверху 50 Расстояние от верха области просмотра, на котором будет отображаться контейнер лайтбокса, в пикселях.
resizeDuration 700 Время, необходимое контейнеру Lightbox для анимации его ширины и высоты при переходе между изображениями разного размера, в миллисекундах.
showImageNumberLabel правда Если false, текст, указывающий номер текущего изображения и общее количество изображений в наборе (например, «изображение 2 из 4») будет скрыт.
обертка вокруг ложь Если истина, когда пользователь достигает последнего изображения в наборе, появляется стрелка навигации вправо, и он продолжит движение вперед, что вернет его к первому изображению в наборе.

Поддержка браузера

Lightbox2 успешно протестирован в следующих браузерах:

  • Internet Explorer.
    Файл lightbox-plus-jquery.js включает jQuery v2.x и поддерживает IE 9+. Если вы хотите поддерживать IE 6, 7 и 8, используйте свою собственную копию jQuery v1.x с lightbox.js .
  • Хром
  • Safari
  • Firefox
  • iOS Safari
  • iOS Chrome
  • Браузер Android
  • Android Chrome

Лицензия

Lightbox2 находится под лицензией MIT License.

  • 100% бесплатно. Lightbox можно использовать как в коммерческих, так и в некоммерческих целях.
  • Указание авторства обязательно. Это означает, что вы должны оставить мое имя, ссылку на мою домашнюю страницу и информацию о лицензии без изменений. Ни один из этих элементов не должен быть обращен к пользователю и не может оставаться в коде.

Справка

Есть вопрос о том, как использовать лайтбокс?

Чтобы получить помощь, выполните следующие действия. Убедитесь, что вы прочитали документацию на этой странице и сначала просмотрели прилагаемый пример.

  1. Найдите Stackoverflow, чтобы узнать, не сталкивались ли другие люди с той же проблемой, что и вы.
  2. Если ваша проблема уникальна, задайте новый вопрос в Stackoverflow. Используйте тег lightbox2 .

Не используйте проблемы Github для сообщения о личных запросах поддержки.

Нашли ошибку?

Если вы обнаружите ошибку, сообщите о проблеме на Github.

Создано Lokesh Dhakar

Веб-сайт Twitter

Загрузить | jQuery Mobile


Скачать Builder

Мы рекомендуем использовать наш инструмент для создания настраиваемого пакета, который содержит только необходимые вам компоненты.Конструктор генерирует пользовательский файл JavaScript, а также полные таблицы стилей, содержащие только структуру, для производственного использования.

Скачать Builder


Последняя стабильная версия

1,4,5

ZIP-файл

Если вы хотите разместить файлы самостоятельно, вы можете загрузить zip-архив со всеми файлами:

jQuery CDN предоставлено MaxCDN

JavaScript:

CSS:

Фрагмент копирования и вставки для файлов, размещенных на jQuery CDN:

1

2

3

 

Google CDN

Microsoft CDN


Устаревшие версии

1.3.2

ZIP-файл

Если вы хотите разместить файлы самостоятельно, вы можете загрузить zip-архив со всеми файлами:

jQuery CDN

JavaScript:

CSS:

Фрагмент копирования и вставки для файлов, размещенных на jQuery CDN:

1

2

3

 

Microsoft CDN

1.2.1

ZIP-файл

Если вы хотите разместить файлы самостоятельно, вы можете загрузить zip-архив со всеми файлами:

jQuery CDN

JavaScript:

CSS:

Фрагмент копирования и вставки для файлов, размещенных на jQuery CDN:

1

2

3

 

Microsoft CDN

1.1.2

ZIP-файл

Если вы хотите разместить файлы самостоятельно, вы можете загрузить zip-архив со всеми файлами:

jQuery CDN

JavaScript:

CSS:

Фрагмент копирования и вставки для файлов, размещенных на jQuery CDN:

1

2

3

 

Microsoft CDN

1.0.1

ZIP-файл

Если вы хотите разместить файлы самостоятельно, вы можете загрузить zip-архив со всеми файлами:

jQuery CDN

JavaScript:

CSS:

Фрагмент копирования и вставки для файлов, размещенных на jQuery CDN:

1

2

3

 

Microsoft CDN


Все загрузки

Ссылки на zip-файлы всех выпусков.


Последний код

Незавершенная сборка, для тестирования.


Вилка jQuery Mobile на GitHub

.

Добавить комментарий

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

2024 © Все права защищены. Карта сайта