2013-02-17 Про JS и jQuery
Про JavaScript
JavaScript — это, конечно, хорошо, но всё-таки лучше, когда его на странице настолько мало, насколько это возможно.
Ибо иначе… вот прямо пример: сделали Википеды WikiEditor. Всё хорошо, удобная новая панель редактирования (увидеть можно, нажав править на любой странице википедии), с ajax-предпросмотром, тоже удобным, все дела.
Но вот вопрос — ЗОЧЕМ было его делать на JS ЦЕЛИКОМ? Можно же было эту панельку вывести пыхом, а потом понацеплять к ней обработчики путём JS.
А на чистом JS (+ jQuery) получается так, что всё в колбэках, и в итоге:
- ☹ Панель появляется не сразу, а через некоторое время (0.5-1 сек) ПОСЛЕ загрузки страницы.
- ☹ Расширяемость WikiEditor «не очень», и опять на тех же колбэках. И, разумеется, опять же никак не кэшируется.
- ☹ Попутно появляется довольно неприятный баг — если перейти куда-то дальше, а потом кликнуть НАЗАД, то состояние страницы, а следовательно, и содержимое окна редактирования НЕ ВОССТАНАВЛИВАЕТСЯ! Причём подобное я уже наблюдал с YAHOO UI в багзилле, и оно как-то мистически связано с использованием события onDOMReady (то есть DOMContentLoaded). То есть именно при каких-то действиях браузер перестаёт уметь полностью восстанавливать состояние страницы при переходах по истории. Причём проявляется это везде, в том числе и в IE, и в Опере (которая R.I.P). Но тут надо ещё подходик совершить, повкуривать, может, найду причину.
Про jQuery
Опять-таки, jQuery — вроде, тоже неплохо. Кое-что полезное он содержит, API у него вроде как поудобнее и поуниверсальнее, чем у голого JS.
Но в целом моё мнение — это не библиотека, а сборник костылей. Причём полный сборник костылей. То есть раньше костыли для поддержки разных браузеров писались ручками, но зато ты писал только те, что нужны тебе. А с jQuery пользуйся — не хочу, но зато таскаешь с собой полный обоз подпорок. Итак, лишняя зависимость на ~90кб, которая должна, естественно, не просто загрузиться (фиг с ним, в кэш ляжет), но ещё и выполниться — это первый минус.
Но есть и (2)ой, возможно, даже более важный минус — повсеместное применение операций над множествами. В чём же минус, спросите вы — это же гораздо удобнее? А вот в чём: если написать что-то не то без jQuery — твой скрипт скорее всего свалится с ошибкой в консоль. А в случае jQuery и операций над множествами что-то просто тихо отвалится — вместо null будет просто пустое множество! То есть jQuery — это дополнительный шаг в сторону типичного скриптового рас!"(дяйства (хотя казалось бы, куда уж дальше-то).
В общем, насчёт важности (2) — хз, конечно. Меня лично больше бесит всё-таки то, что многие уже не в силах писать без jQuery, и 90кб тащат ради скрипта на 30 строчек. Это у меня природное какое-то влечение к упрощению, да.
Так что я испытываю глубокое моральное удовлетворение от выпиливания откуда-нибудь jQuery :-)
Что характерно, количество кода при этом обычно либо не увеличивается, либо увеличивается лишь сааамую малость.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.