пятница, 18 октября 2013 г.

jQuery Russia состоялась

И вот состоялась та самая конференция #jQueryRussia, о которой я писал в предверии несколько раз. Поехать лично я, к сожалению, не смог, поэтому смотрел онлайн.

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

Открыл конференцию Дэйв Мэтвин, после приветсвия он перешёл к первому на конференции докладу о производительности jQuery - по ходу доклада показал своё неравнодушие к культуре России и использовал в качестве кратких тезисов русские пословицы. Он показал как можно использовать профилирование в Google Chrome и IE11. Надо отметить, что IE11 имеет хороший профилировщик на борту и Дэйв что-то показывал на его примере чуть ли не чаще, чем на примере Chrome. Также Дэйв сделал акцент на том, что в большинстве случаев проблемы возникают не из-за самой библиотеки jQuery, а из-за неправильного её использования, и тут я с ним полностью соглашусь - насмотрелся на всякое.


Последующие доклады были распараллелены по трём залам, что заставляет отказываться от чего-то тоже интересного в пользу ещё более интересного :) Правда, организаторы обещали всем участникам записи остальных докладов - надеюсь можно будет посмотреть пропущенные.

На второй доклад я выбрал тему "Продвинутое использование событий в jQuery" от Ильи Кантора - этот доклад, по мнению многих, оказался одним из самых интересных на конференции. Илья рассказал про довольно понятные моменты или даже очевидные для тех, кто любит покопаться в исходниках, но совсем не знакомые даже опытным пользователям jQuery среднего уровня. Среди таких моментов были и event.stopImmediatePropagation(), который прерывает не только всплытие события, как обычный event.stopPropogation(), но и вызов обработчиков на этом же элементе, добавленных после текущего. Рассказал про то, что return false из обработчика работает не так же, как нативный вариант в браузере - разница в том, что при нативном навешивании обработчиков return false == event.preventDefault(), а в случае использования jQuery == event.preventDefault() + event.stopPropagation(), что может привести к расхождению ожиданий и реалий. Показал трюк, что вы можете добавить поддержку событий для собственных объектов с помощью оборачивания их в jQuery (для интересующихся могу выложить пример кода, как это делается). Также Илья рассказал про возможные утечки памяти, основанные на специфике работы jQuery и если бездумно использовать библиотеку, и в этом же месте дал совет, как следует удалять большое количество элементов из DOM и как не следует. В общем-то, по каждому пункту из доклада Ильи можно написать отдельный пост, темы действительно интересные.

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

Далее я подключился к докладу "Организация Front End-разработки на крупном проекте". Но там что-то начал Дмитрий Кузнецов рассказывать про найм разработчиков, и я решил, что эта тема мне не очень интересна и переключился на другой зал. В другом зале вещали про построение собственного JS SDK. Тема интересная и опыт, конечно, полезный и результаты у компании впечатляющие, но задача всё таки специфичная и возникает совсем не часто. Докладчики поделились своим опытом и трудностями выбора как библиотек, так и решения теоретических задач.

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

И последний доклад я смотрел о разработке JavaScript интерфейсов в больших проектах в интерпритации Артура Столяра. Артур высказывал вполне здравые идеи и советы по организации взаимодействия разметки и JS кода. Но, как обычно, не стоит доводить до крайности. Артур в своём стремлении максимально абстрагировать код js-контролов от разметки и внешних параметров несколько перегнул палку. И закончил свой доклад обещанием через месяц выложить библиотеку собственного производства на GitHub - что выглядело как-то совсем нелепо и немного смешно.

В конце по программе конференции была сессия вопросов и ответов. Мне понравились и запомнились два вопроса:
1) Раз уж jQuery так часто используется на сайтах и даже в расширениях, давайте встроим jQuery в браузеры. Ответ был предсказуемым и логичным, что проблемно и встроить, а поддерживать разные версии библиотеки в рамках одного браузера будет вообще невозможно, а также возникнет сложность с версиями из-за того, что циклы обновления браузеров сейчас разные.
и 2) Опять же, исходя из частоты использования библиотеки, может стоит сделать jQuery не библиотекой, а целым фреймворком, который быдет в себя включать всё-всё (например, MVC и прочие новомодные штуки). Ответ первым и почти сразу же дал Скотт Гонзалез - коротко и ёмко: "No", - и я с ним согласен. Пусть уж лучше другие берут за базу jQuery, а не пишут тот же самый код, только со своими багами, чем раздувать jQuery до размеров вселенной.

Вот и всё. Организаторам большое спасибо, приглашайте ещё!