Учитывая, насколько проще разработка jQuery по сравнению с нативным JavaScript, что заставляет людей вообще отказываться от таких библиотек, как jQuery?
Это потому, что у jQuery есть ограничения или он медленный? Я имею в виду, если jQuery настолько прост по сравнению с нативным javascript, то по каким причинам люди все еще должны использовать чистый javascript?
XMLHttpRequest
vsActiveXObject
, илиaddEventListener
vs.attachEvent
, илиcss selectors
vs,xpath selectors
иno selector support
т. Д.). В недавних браузерах большинство этих проблем не существуют, потому что они следуют тем же стандартам.Ответы:
Давайте поговорим об автомобилях.
Ой, подождите, мы уже сделали - помните то время, когда мы встретились, некоторое время назад? Мы говорили об автомобилях. На самом деле, вы, казалось, были довольно знатоком автомобилей. Вы смогли подробно объяснить все, что правильно, что неправильно и что интересно в последней гонке Формулы 1. Вы знали наизусть все модели Lamborghini, включая их цену и доступность. У вас даже были мысли о покупке собственного Ferrari 599 GTB Fiorano, и вы копили на него (держу пари, что стейк-ужин не сильно помог).
Объясняя ошибки Toyota великим взволнованным голосом, вы неожиданно вскочили со стула и взвизгнули, взмахнув кулаками: «Черт возьми, я великолепный эксперт по всем вопросам, связанным с автомобилями! Я» собираюсь стать автомехаником!
И так вы пошли. У вас было собеседование, ваш босс был так же впечатлен вашим знанием, как и я, и вас приняли на работу. Первый клиент пришел. Его сцепление было сломано. Вы проверяли это и не знали, что делать. На самом деле, вы абсолютно не знали, как следовать совету, который дал вам Босс. Вы были уволены.
Но как это могло быть !? Вы знаете все об автомобилях! За исключением ... всего об автомобилях. Вы можете очень хорошо знать, что у машины вашей мечты есть двигатель V12, но вы не знаете, что это на самом деле означает.
Значит, вы не автомеханик, на самом деле - вы автолюбитель. И пока вы не узнаете, как работают машины , вы останетесь энтузиастом.
Теперь позвольте мне спросить вас. Как
$.fn.text
работает? А как насчет$.fn
? Что они на самом деле значат? Как$(something)
вернуть гигантскую вещь, содержащую вещи, и что это за штука именно? Можете ли вы воспроизвести их функциональность, хотя бы немного, даже теоретически? Вы можете справиться без JQuery?Сказать, что «нативный JavaScript сложен» - это просто… ложь. Прежде всего, потому что JavaScript как язык не имеет ничего общего с DOM , что в основном и составляет абстракция jQuery. Во-вторых, поскольку, узнав немного о DOM, вы уже можете просматривать самые распространенные кросс-браузерные ошибки. Но только маленький секрет - сначала все сложно. Долгий дивизион был сукой в 5 классе.
В качестве второй аналогии для этого ответа: jQuery - это JavaScript-DOM (не язык JavaScript, а DOM), как
Array.prototype.forEach
иfor
. Это работает, в 99% случаев. И это хорошо работает. Но для того 1%, который не покрывается, вам нужно знать, как использоватьfor
цикл, хотя бы для практического применения. Весь этот ответ основан на «более чистой» стороне вопроса, а не даже на технической стороне (например, размер библиотеки и ряд других вещей, как объяснено в ответе Майкла Дорранта). Поскольку я люблю JavaScript, и когда люди, кажется, просто отбрасывают его, небрежно говоря «тьфу, эти глупые javascriptians» и размахивая причудливыми белыми перчатками, это сводится к морали.Если вы можете принять тот факт, что вы всегда будете энтузиастом JavaScript, то кто я такой, чтобы остановить вас? Но если вы хотите стать программистом на JavaScript, вам сначала нужно иметь знания, чтобы хотя бы выбрать между использованием jQuery (или любой другой библиотеки) и не использованием библиотеки. Узнайте DOM. Узнайте, как его использовать. Напишите свою собственную маленькую библиотеку или просто некоторую коллекцию вспомогательных функций. И как только вы узнаете о DOM, и вы решите использовать jQuery - GodSpeed. Лень награждается тем, кто много работал.
источник
Причины, которые я знаю:
Когда потребность крайне минимальна, скажите 1 onclick.
Когда скорость загрузки критична, а библиотека jQuery слишком велика, и вам не нужно писать много (специального) кода для ее замены.
При интеграции с другими технологиями иногда лучше использовать raw js.
При работе над устаревшей системой (она же «производство») уже написана в js с установленными шаблонами.
источник
jQuery - это просто фреймворк - набор инструментов, написанных на JavaScript. Используя этот набор инструментов, вы все еще используете JavaScript. Некоторые люди предпочитают писать JavaScript, используя инструменты, предоставляемые jQuery, некоторые предпочитают не делать этого, другие выбирают другие наборы инструментов.
Некоторые причины, по которым вы можете захотеть написать «чистый» JavaScript без jQuery:
источник
jQuery, как и любая библиотека или фреймворк, добавляет еще один уровень ошибок . Мне это нравится, но я также потерял день на поиск ошибки, которая оказалась в ядре jQuery, а не в моем коде (редкий случай, но не такой уж редкий).
Кроме этого я не вижу другой причины не использовать его:
НО это никогда не должно использоваться в качестве замены знаний Javascript. Если вы не знаете, как сделать это на чистом Javascript, вы можете сначала получить библиотеку, но в конечном итоге вы заплатите за нее.
И, конечно же, есть все мы, кто уже несколько лет заперт в смертельной схватке с IE6, и нам нелегко отказаться от наших уловок старой школы в пользу блестящей новой игрушки.
источник
The huge gallery of plugins help me write prototypes in very short times
... Просто прототипы, я избегаю их в рабочем коде, когда это возможно. Конечно, есть несколько плагинов с отличным кодом, но вы должны их очень усердно искать ...В среде браузера вам необходим инструмент нормализации кросс-браузера. Такой инструмент поставляется в двух вариантах
Как правило, вы можете использовать эти утилиты одним из трех способов
addClass
илиsetText
в коде, когда и где они вам нужныВам нужен какой-то механизм нормализации, иначе вы получите поддержку кросс-браузеров с нулевым значением.
Что касается использования существующего, это нормально. Я бы просто не использовал jQuery. Лично я в настоящее время пишу свою собственную библиотеку ( DOM-shim исправляет браузеры, не выставляя чужой полезный API. Он превращает ваши браузеры в единый стандартизированный браузер с хорошим поведением).
источник
Если вам не нужна абстракция DOM, поддержка кросс-браузера и устаревшего браузера - вы можете легко обойтись без jQuery.
Это тот случай, когда вы разрабатываете расширения для браузера, скрипты greasemonkey (иногда), что-то интересное, разрабатываете для Node.js или других не браузерных сред.
источник
Наряду с другими ответами здесь, особенно с Майклом Даррантом , я бы увидел, что скорость является основной причиной, по которой я иногда выбираю использовать сырой JavaScript.
В последнее время я работал над множеством анимаций или других задач, интенсивно использующих процессор, и иногда сырой JavaScript намного, намного быстрее, чем если бы я проходил через jQuery.
Одним из примеров является то, где я хотел изменить непрозрачность
position: fixed
элемента в зависимости от того, как далеко вниз на странице прокручивал пользователь. Эффект был слишком медленным, когда я использовал для этого jQuery, из-за чего прокрутка вызывала рывки, и эффект затухания был разрушен. Я перешел на использование прямого JavaScript, и все было гладко и гладко, кроме IE <= 8.источник
Мне нужно предвосхитить мой ответ с некоторой открытой честностью. Я люблю JQuery. Это значительно облегчает мою жизнь и делает код JavaScript более декларативным, и я считаю, что все должно работать.
JQuery делает много вещей ...
Да, вы можете добавить плагины
Да, вы можете расширить селекторы
Да, это упрощает анимацию
но JQuery не делает все
Вы когда-нибудь пробовали работать с несколькими окнами с помощью jQuery? jQuery не подходит для работы с различными контекстами окна, потому что он сохраняет оригинал
window
иdocument
контекст из окна, в котором он был вызван.Я написал код здесь и там для создания всплывающих окон *, и jQuery может просто помешать тому, чего я пытаюсь достичь. Добавление новой ссылки на jQuery в дочернем окне часто может усугубить ситуацию, усложняя определение используемого контекста jQuery.
* подумайте о всплывающем окне Gmail для создания электронного письма в новом окне, а не о спам-рекламе
Используйте это, когда это делает код проще
Время использовать jQuery - это когда вы можете сделать свой код проще, короче, удобочитаемее и быстрее.
Время не использовать jQuery - это когда он не сделает ваш код проще, короче, удобочитаемее или быстрее. Если вам нужно настроить время загрузки, вы можете не использовать jQuery из-за накладных расходов на событие.
источник
Как вы знаете, jQuery - это фреймворк общего назначения, который предоставляет множество методов, которые многие из нас не используют в наших проектах. (Некоторые из них я не использовал вообще.)
Есть две основные причины, по которым не следует использовать jQuery или любые другие хорошо зарекомендовавшие себя фреймворки.
1. Проект не является большим или достаточно сложным, чтобы использовать такую структуру: в этом случае кодер принимает обоснованное решение, основываясь на своем опыте и знаниях JavaScript. Это поможет ему уменьшить вес страницы, а также больше контроля над кодом.
2. Кодер разрабатывает свой собственный фреймворк. Я видел проект в моей компании, который имеет свой собственный фреймворк JavaScript. Причина, по которой они указывают, заключается в том, что если они используют jQuery и в нем есть какая-то ошибка, которую нужно исправить, им приходится ждать до следующей версии. Более того, если есть функция, которую нужно добавить, им нужно попросить команду jQuery или добавить плагин, даже если создание плагина не будет хорошей идеей (они привели пример использования
.live
подобной вещи в своих рамки еще до того, как она была официально добавлена в JQuery). Наличие вашей собственной структуры дает вам больше контроля над кодом. Недостатком является то, что вам нужно заново изобрести колесо в отношении проблем совместимости браузера и т. Д. Кроме того, если процесс разработки не удастся, ваш фреймворк будет раздутым и только увеличит время его обслуживания.источник
Майк
Я думаю, что люди застрахуются от использования некоторых библиотек из-за зависимости от этого решения инфраструктуры / библиотеки для выполнения какой-либо задачи.
Но давайте будем осторожны, чтобы помнить, что языки приходят и уходят, как библиотеки в долгосрочной перспективе.
Так что, возможно, это временная сфера. Возможно, люди не решаются вкладывать средства в библиотеку, которой просто не может быть - или у которой в конечном итоге будет такой же импульс в долгосрочной перспективе.
Себя? Я не возражаю против использования JQuery в частности. Я также смотрю, скажем, на Box2d.js или three.js и предпочел бы принять их, даже если бы у них был короткий срок годности, чем упустить то, что они могут предложить.
Суть Майка в том, что есть риск в сроке хранения выбранной вами библиотеки, и я думаю, что некоторые в сообществе javascript, возможно, понесли убытки из-за того, что библиотека или проект заканчиваются, и, возможно, только что сказали - никогда больше.
источник
Я бы сказал, что основная проблема заключается в том, что все больше и больше людей (подавляющее большинство?) Больше не знают, как кодировать на JavaScript. Если jQuery не может что-то сделать, они не могут этого сделать.
Дело доходит до того, что простые примеры JavaScript становятся все труднее найти. Ничего против jQuery; это отличные рамки. Я получил много хороших идей из этого, но люди должны сначала изучить JavaScript, а затем изучить фреймворк. Лично я считаю, что моя собственная среда более гибкая и лучше соответствует моим потребностям, и да, я иногда изобретаю колесо, но полный контроль и контроль над исправлениями ошибок - огромная выгода, если вы готовы приложить усилия для изучения JavaScript.
Не только это. Знание ванильного JavaScript делает намного интереснее играть и экспериментировать с новыми функциями, а не ждать реализации на основе фреймворка. Кроме того, я не виню в этом jQuery, поскольку это в основном библиотека DOM , но масштабировать ее в больших проектах может быть непросто. Другие структуры делают лучшую работу в этом; Прототип приходит на ум.
Короче говоря, это отличная основа, но далеко не все люди, которые это делают.
источник
Я могу добавить еще две причины, которые не были упомянуты:
Когда я часто выбирал совершенно новые технологии, я начинал с конструкций более низкого уровня, а затем переходил к конструкциям более высокого уровня. Я в первую очередь разработчик C ++ / C #, но некоторое время назад, когда я впервые начал играть с HTML / CSS / JavaScript, я решил не использовать какую-либо инфраструктуру, потому что я хотел сначала получить представление о технологии (то есть JavaScript) сам язык), что эти рамки построены на вершине.
Я не знаю, насколько это распространено, но мне кажется, что есть много людей, которые, когда они видят следующую инфраструктуру / технологию / язык, получают первый ответ: «Не другой API для меня!» Их не волнует, насколько прост jQuery, но они просто видят, что он стоит между ними и выполняет работу, используя свои «настоящие и проверенные» методы. Это та же категория людей, которые отказываются использовать библиотеку Boost или любую другую STL и продолжают использовать malloc практически для всего. Вы спросили, почему они выбирают чистый JavaScript вместо jQuery, и на самом деле они никогда не делали этого, потому что большую часть времени они отказывались оценивать jQuery, и были совершенно довольны их нынешним темпом развития, независимо от того, насколько он медленный.
источник
jQuery - это библиотека, написанная на языке JavaScript и для него. Идея состоит в том, что он делает все сложные / утомительные вещи JavaScript простыми, тем самым ускоряя время разработки и повышая вероятность того, что ваши сценарии будут работать в разных браузерах.
Что делает jQuery предпочтительным для использования:
Вот причины, по которым JavaScript предпочтительнее использовать, а не jQuery:
По этим причинам мне нравится использовать JavaScript, чтобы избежать фреймворка jQuery. Гораздо лучше изучать JavaScript, в зависимости от такой библиотеки ...
Даже если вы хотите расширить их, вам нужно написать код на JavaScript. Что тоже большой разговор. Разработчики зависят от этих библиотек, поэтому для контроля над проектами лучше использовать JavaScript, чем использовать фреймворки.
источник
Я думаю, что люди используют jQuery, потому что он проще, проще и мощнее, и потому что он помогает им забыть об IE. Кроме того, для пользовательских функций люди используют javascript. Попробуйте обратиться в DOC для получения более подробной информации.
источник