Недостатки использования jQuery?

Я слышал много и много хороших вещей для jQuery, но каковы некоторые из недостатков текущей версии jQuery и какие функции вы хотите в следующей версии jQuery?

Ответ 1

Большой, большой недостаток - его абстракция скрывает "уродливые части" JavaScript, поэтому сделать обучение JS намного сложнее. Это проблема, которая наносит ущерб сообществу JS. Что происходит, у вас есть дизайнеры/разработчики, которые могут делать простые опрокидывания и слайд-шоу, но сталкиваются с большими проблемами, когда вступает в игру настоящая манипуляция DOM.

Другим недостатком является не только размер, но и как аморфный jQuery. С каждым новым браузером (в первую очередь Internet Explorer) проводится довольно много работы за кулисами для расширения базы кода. Это было наиболее очевидно с IE8, в котором справедливое количество jQuery пришлось переписать, чтобы по крайней мере соответствовать новейшей версии IE. В результате у вас есть гигантская коллекция методов и свойств (более 200 КБ с момента появления jQuery 1.5). Даже с широким спектром возможностей для сжатия/кэширования файлов вы по-прежнему будете испытывать приличное количество времени загрузки (несколько секунд при хорошем подключении).

Один из этих вариантов - через сеть распространения контента Google (CDN). Он может кэшировать jQuery для вас и ускорять время загрузки. Однако теперь вы полагаетесь на два источника, чтобы работать безупречно. Недавно Google применил одну из новых ( >= 1.5) версий jQuery. Это привело к некоторым несовместимостям в течение нескольких часов и создало проблемы для jQueryUI и различных плагинов. Как я сказал ранее, вы полагаетесь на два источника, чтобы всегда работать. Сохранение собственной локализованной версии может снизить этот риск.

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

Это те проблемы, которые у меня на уме сейчас. Надеюсь, в будущем это будет вам полезной.

Ответ 2

Для меня любые недостатки с jQuery не будут касаться того, какие функции он отсутствует, но какие ненужные функции он включает.

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

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

  • Кодовая база просто продолжает расти. Менее 30 КБ gzipped и minified по-прежнему впечатляет, но он достигает размера, где он больше, чем любой файл CSS или заголовок, который мне когда-либо приходилось загружать. Он использует подход "монолитного ядра" к библиотеке Javascript, который, вероятно, является большим фактором успеха - он включает все, что вам нужно в одном месте, а не делает его более модульным.

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

Ответ 3

Если вопрос: "Должен ли я использовать библиотеку для javascript?" Ответ однозначный - да. Самое худшее в javascript - это разные реализации, и использование библиотеки js значительно уменьшит эту проблему. Не было много профессиональной работы с javascript без использования какой-либо библиотеки с 2005 года или около того, когда прототип попал.

Если вопрос более "Каковы относительные сильные стороны JQuery?", вот несколько пунктов

  • Это только библиотека абстракции dom. Если вам нужно сделать больше, чем небольшие анимации или изменения стиля, jquery сам по себе недостаточно.

  • Говоря это, это все, что хотят большинство людей, что является большой частью того, почему он так популярен. Проблема с экстремальной популярностью - люди, которые не являются серьезными разработчиками javascript, склонны думать о javascript == jquery, чего это действительно не так.

  • В принципе, если вы добавляете какое-то тривиальное поведение на страницу, jquery является фантастическим. Если вы создаете веб-приложение "RIA", вы хотите больше смотреть на dojo (или даже sproutcore, в зависимости от того, как далеко вы хотите идти). Если вы находитесь где-то посередине, MooTool сделает все, что вам нужно.

  • Если вы являетесь типом человека, который скорее построит свой собственный набор инструментов, а затем перейдет к структуре типа "Все и кухонный раковина", jquery + underscore + backbone доставит вас довольно далеко.

Ответ 4

По сравнению с чем? В каком контексте? Само по себе трудно сказать, что у него есть недостатки.

Но в некоторых ситуациях есть некоторые недостатки:

  • Это большой. Библиотека jQuery - это хит на вашем сервере и что-то, что должен загружать конечный пользователь. Минимизация, CDN'ing, Caching и т.д. Помогают минимизировать его, но если вы ищете сверхлегкое решение JS, запись его с нуля, скорее всего, даст вам небольшой размер файла.

  • много манипуляций с DOM CSS, которые он делает, не обязательно оптимизируется из POV доступности. Это становится лучше... особенно все материалы ARIA, которые группа нитей выполняет

  • не все являются поклонниками пользовательского интерфейса jQuery. Это хорошо, конечно. Но и немного тяжело, ИМХО.

  • это может быть немного запутанным, если вы не понимаете некоторые основы JS. Хорошо понимать, что время от времени jQuery делает за кулисами.

Но, честно говоря, вы должны копать, чтобы действительно жаловаться на это. IMHO, jQuery + StackOverflow снова запустил веб-разработку.; О)

Ответ 5

Я думаю, что это зависит от уровня опыта JavaScript, о котором мы говорим. Если мы говорим с новичком через промежуточную перспективу, недостатком является то, что это может быть костыль, препятствующий разработчикам оттачивать свои собственные навыки JS (с другой стороны, он также может быть мостом INTO JS development - это, безусловно, было для меня).

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

Также может оказаться немного сложнее сохранить весь ваш код, поскольку ваш код становится больше.

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

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

Ответ 6

Основным недостатком (кроме того, что он абстрагирует некоторые ключевые понятия javascript), является тот факт, что все связывает все, поэтому библиотека будет по своей сути большой.

Большие файлы javascript = больше времени загрузки.

И не поймите меня неправильно, я люблю jQuery... Я просто показываю вам другую сторону истории:)