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 :-)

Что характерно, количество кода при этом обычно либо не увеличивается, либо увеличивается лишь сааамую малость.

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.

Do you want to try some new features? By joining the beta, you will get access to experimental features, at the risk of encountering bugs and issues.

Ок Нет, спасибо