Нет, в заголовке не опечатка. Я действительно имею ввиду mQuery, а не jQuery. mQuery – аналог библиотеки jQuery, включенный в состав SharePoint 2013. Как обычно эта библиотека недокументированна и известна очень малому количеству людей. Исследовал её Антон Вишняков и опубликовал обзор с примером в своем блоге.

Что такое mQuery

Группа разработчиков SharePoint нашла критический недостаток в jQuery – её написали не они. И поэтому решили сделать свой jQuery с пасьянсом и куртизанками. Это конечно шутка.

Правда заключается в том, что jQuery – фактически стандарт для веб-разработки, но её довольно проблематично использовать в SharePoint. Часто возникают конфликты с другими расширениями, которые тоже хотят использовать jQuery других версий. Кроме того переопределение переменной $ в клиентском скрипте ломает Asset Picker и еще некоторые функции в SharePoint 2010 (в 2013 тоже ломается asset picker).

Поэтому было решено включить подмножество jQuery в SharePoint 2013, которое назвали mQuery. Точка входа – переменная m$, доступное API во многом повторяет jQuery, но есть отличия.

mQuery-intellisence[1]

Вы спросите – а почему было не включить саму библиотеку jQuery в SharePoint? Увы, ответа на этот вопрос я не знаю, как и не знаю планов на будущее mQuery.

Как использовать mQuery

На всех страницах SharePoint 2013 библиотека mQuery уже присутствует как OnDemand, то есть загружаемая о требованию. Для использования mQuery надо написать такой код:

SP.SOD.executeFunc('mQuery.js', 'm$', function() {
    // DO STUFF
}

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

Если же пишете JavaScript в VisualStudio, то в начале js файла добавьте строку:

/// <reference path=”C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\mQuery.debug.js” />

Далее вы можете использовать знакомые методы

//Код выполняется после загрузки страницы
m$.ready(function() { }) 

//Создание обработчика событий для списка
m$("selector").click(function (e) { }) 

//Сокрытие элементов
m$("selector").css("display", "none") 

//и многое другое

Полный перечень функций можно посмотреть тут.

Ограничения mQuery

  • Работает только на страницах SharePoint (использует некоторые особенности SharePoint и MicrosoftAjax).
  • Не содержит множество shortcut-функций, например отсутствуют функции show и hide, text, val.
  • Не содержит функцию ajax и производные, предполагается использование JSOM для общения с сервером.
  • Не содержит анимацию, в SharePoint 2013 своя библиотека для анимации.
  • Нет интерфейса плагинов.
  • Нет возможности конструирования html.

Пример

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

Выглядит примерно так:

image

Этот пример я сконвертировал в app на TypeScript и вы можете скачать его и запустить в Office 365, не имея установленного SharePoint на вашем компьютере.

Этот пример (и множество других) можно скачать с сайта проекта SPTypeScript.

Заключение

Очень рекомендую ознакомиться с возможностями mQuery, возможно вам не придется тащить в своих решениях jQuery и бороться с проблемами совместимости.

Также рекомендую подписаться на блог Антона и начать использовать TypeScript для проектов на SharePoint.

Теги : SharePoint 2013, mQuery, sp2013, typescript, jQuery