Статьи

Соответствует Карлу Сведбергу

Недавно я с удовольствием беседовал с Карлом Сведбергом о Javascript и веб-разработке в целом. Карл является автором нескольких книг по Javascript, таких как Learning jQuery и jQuery Reference Guide . Присоединяйтесь к нам, чтобы заглянуть в сознание скромного и талантливого разработчика.

Fusionary

Я (в основном фронт-энд) веб-разработчик в небольшом агентстве Fusionary Media в Гранд-Рапидсе, штат Мичиган. В свои 41 год я, вероятно, старше, чем большинство веб-разработчиков, но большую часть времени я все еще чувствую себя ребенком. Вне работы я очень связан с jQuery. Я работаю в команде проекта jQuery и пишу об этом, обучаю других тому, как его использовать, и говорю об этом на конференциях.

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

Я люблю читать, бегать и тусоваться с семьей. Еще год назад я изучал каратэ около семи лет, и я собираюсь начать его заново. Мне также нравится фотографировать, открывать для себя новую музыку и общаться с друзьями.

Скриншот EnglishRules

Это мой личный блог, которым я пренебрегал в последнее время. Я не помню точно, когда я начал это — 2000? 2001? — но идея заключалась в том, чтобы предоставить некоторую информацию и ссылки для моих студентов. В то время я преподавал английский в средней школе. С тех пор это стало путаницей моих мимолетных интересов. В 2003 году я загрузил Movable Type и начал вести блог на нем. В какой-то момент я подумал, что было бы интересно каждый день публиковать новое слово из того, что я читал, поэтому я сделал это некоторое время. Тогда у меня возникло безумное мнение, что я могу ответить на мировые вопросы о грамматике, пунктуации, стиле, орфографии и так далее, но это продолжалось недолго. Некоторое время я размещал кучу своих фотографий на сайте, но это тоже зашло в тупик. Возможно, самой большой мотивацией для того, чтобы это продолжалось, было дать друзьям и семье моментальный снимок того, что я делаю, но в последнее время Facebook и Twitter удовлетворяли эту потребность.

Я начал использовать jQuery где-то в мае или июне 2006 года. У меня все еще есть копия «Rev 27» файла ядра jQuery со 2 мая 2006 года , еще до того, как у него появился номер версии. Обидно, что файл сжат и запутан. Было бы очень интересно покопаться в этом и посмотреть, как много изменилось.

Скриншот LearningjQuery

Сайт появился первым. Поработав с jQuery в течение пары месяцев, я подумал, что было бы неплохо начать документировать то, что я узнал. Я спросил Джона Резига, не возражает ли он, если я использую имя jQuery и веду блог о моем опыте, и он был в восторге от этой идеи.

Спустя несколько месяцев после того, как я начал вести блог, кто-то из Packt Publishing связался со мной и спросил, не хочу ли я написать книгу о jQuery — предложение, которое мне польстило и ужаснуло. Я согласился сделать это, но только если мой друг (Джонатан Чеффер) мог написать это со мной. Он гораздо лучший программист, чем я, а я тогда был еще новичком.

Домашняя страница jQuery

Выбор библиотеки JavaScript очень похож на выбор цифровой зеркальной камеры (разумеется, если вы берете цену из уравнения). Почему Никон? Почему не Canon или Pentax? Я не уверен, что кто-то может удовлетворительно ответить на эти вопросы, основываясь только на технических достоинствах. Многое связано с нематериальными активами: сообщество, поддержка, совместимость с вашими уже устоявшимися ментальными моделями о том, как все должно работать, выглядеть и чувствовать. Люди также рассматривают возможность расширения — в виде линз и аксессуаров для камер, плагинов и виджетов для библиотек JavaScript. Конечно, технические достоинства играют свою роль. Производительность, характеристики и надежность важны. Но, как и в случае с компаниями, производящими камеры, разработчики библиотеки JavaScript продолжают перепрыгивать друг в друга в этих областях, и лучшая в любой из этих областей сегодня может оказаться не самой лучшей в этой области через шесть месяцев.

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

Вопрос, который я чаще всего задаю в списке обсуждений jQuery (группа Google), звучит так: «Почему мои события перестают работать после того, как я вставил элементы в свой документ?» У нас есть подробная тема часто задаваемых вопросов, которая отвечает на этот вопрос. Я написал пару статей об этом на learningjquery.com. У нас есть плагин Live Query и, начиная с jQuery 1.3, метод .live (), который решает проблему. Тем не менее, несмотря на все это, вопрос все еще поднимается несколько раз в неделю.

Скриншот jqueryfordesigners

Помимо learningjquery.com и книги Learning jQuery 1.3 существует немало отличных ресурсов. У Реми Шарпа есть несколько потрясающих скринкастов на его сайте jQuery for Designers , и я видел несколько замечательных статей от Марка Грабански и Джеймса Падолси в их соответствующих блогах. Группа jQuery Google очень популярна: в ней более 16 000 участников, а IRC-канал #jquery на freenode.net достаточно активен и полезен.

Я бы хотел, чтобы метод .live () работал со всеми типами событий. В настоящее время он работает только с подмножеством, поэтому вы не можете использовать его с изменением, фокусом, размытием, отправкой, вводом мыши или отпусканием мыши. Я также думаю, что было бы здорово разрешить использование анонимной функции в качестве аргумента для .css (), .val () и .html () так же, как для .attr ().

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

Конечно. Одна плохая практика — использовать jQuery для чего-то, что вы могли бы сделать проще и эффективнее с помощью CSS. Например, веб-разработчики годами меняли положение фона спрайта изображения, когда пользовательская мышь наводит курсор на ссылку. Для этого нет абсолютно никакой причины использовать jQuery, если только разработчик не хочет, чтобы изменение состояния при наведении курсора было анимированным.

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

Читайте учебники с авторитетных сайтов. Задавайте вопросы в списке обсуждений и читайте ответы на вопросы других людей. В частности, прочитайте все, что Майкл Гири и Дейв Метвин опубликовали в списке. Попробуйте подражать коду великих авторов плагинов, таких как Майк Алсуп, Ариэль Флезлер, Йорн Зефферер и Брэндон Аарон.

Плагин jQuery Cycle

Я часто пишу свои, но я использую несколько довольно часто. Кажется, что каждый клиент хочет иметь своего рода ротатор изображений на своей домашней странице, поэтому я использую для этого плагин Cycle Майка Алсупа. Я также довольно часто использую его плагины Form и Media. Я часто полагаюсь на плагин Superfish Джоэля Берча и плагин Брайана Черна hoverIntent, когда клиент хочет выпадающее меню. В последнее время я все больше и больше использую пользовательский интерфейс jQuery для общей тематики виджетов, расширенных эффектов, ползунков и перетаскиваемых / сбрасываемых элементов.

Я не в восторге от некоторых имен методов в API. В очень ранних версиях jQuery было два имени метода для обхода дерева DOM: .parents () и .ancestors (). Когда API был обрезан, .ancestors () был удален. Я бы предпочел отказаться от .parents (), потому что я думаю, что «предки» лучше описывают то, что выбирается. И хотя в целом мне нравится, как jQuery перегружает методы, я думаю, что методы .load () и .toggle () слишком далеко зашли в эту идею.

JQuery Book

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

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

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

Ничего такого, что еще не было упомянуто, но спасибо за предложение!

С удовольствием! Я польщен вашим интересом к тому, что я должен сказать.