Схема подключения библиотеки jQuery

{ block: 'i-jquery' }

Используется для поставки на страницу нужных плагинов через зависимости блоков от элементов блока i-jquery.

Блок i-jquery помогает подключить jQuery на страницу и упорядочивает хранение js-кода плагинов.

На уровне blocks-common блок i-jquery состоит из нескольких элементов, которые содержат плагины к jQuery. Декларация этих элементов обеспечивает подключение этих плагинов в страничный JS.

На уровне blocks-desktop есть дополнительный элемент core.

Таким образом, для того, чтобы поддерживаемая версия jQuery оказалась на страницах, нужно использовать такой BEMJSON:

({
    block: 'b-page',
    title: 'Страница про ссылку',
    head: [
        ...
        { block: 'i-jquery', elem: 'core' },
        ...
    ],

Этот шаблон не продуцирует DOM-представление элемента. Он декларирует использование на странице элемента js, блока b-page, подключающего js с jQuery.

Если мы решим перейти на новую версию библиотеки, просто изменим этот шаблон. И тогда у всех проектов, подключавших jQuery не вручную, а через блок i-jquery, своевременно изменится версия.

Можно перезаписать этот базовый шаблон BEMHTML шаблоном на своём уровне переопределения (для всего проекта или только для некоторых страниц). В этом случае, используя те же самые входные данные, можно получать более подходящий проекту результат.

В директории элемента core в виде кода модификаторов элемента размещены совместимые с библиотекой версии jQuery в минимизированном состоянии. При помощи переопределения BEMHTML шаблона такими файлами можно пользоваться для оффлайн-разработки:

block i-jquery, elem core, default: {
    local(
        this._mode = '',
        this.ctx = {
            block: 'b-page',
            elem: 'js',
            url: '/bem-bl/blocks-desktop/i-jquery/__core/_version/i-jquery__core_version_1.6.2.js'
        }
    ) this.apply()
}
Модификаторы
_dummy

_dummy_no

Полноценная копия настоящего jQuery

{ mods: { 'dummy': 'no' } }
_dummy_yes

Необходимый минимум для работы кода, зависящего от jQuery вне браузера (например в NodeJS)

{ mods: { 'dummy': 'yes' } }
Элементы
__cookie
{ elem: 'cookie' }
__debounce

Debounce and throttle function's decorator plugin 1.0.6

{ elem: 'debounce' }
__decodeuri

Плагин для декодирования URI-escaped строки в CP1251

{ elem: 'decodeuri' }
__identify

Плагин для уникализации и идентификации объектов

{ elem: 'identify' }
__inherit

Плагин для наследования

{ elem: 'inherit' }
__is-empty-object

Плагин, реализующий $.isEmptyObject для jQuery < 1.4

{ elem: 'is-empty-object' }
__leftclick

Плагин, позволяющий навешивать обработчики событий на нажатие только левой клавиши манипулятора типа мышь

{ elem: 'leftclick' }
__observable

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

{ elem: 'observable' }
__core

Элемент, подключающий библиотеку jQuery к странице

{ elem: 'core' }