Оновлення 2015:
У цій відповіді з 2011 року я говорю про такі бібліотеки, як jQuery, YUI або Prototype. Сьогодні в 2015 році це міркування все ще застосовується до таких фреймворків, як Angular, React або Ember. За ці 4 роки технологія надзвичайно прогресувала, і хоча я бачу значно менше упереджень до React або Angular, ніж до jQuery або YUI, таке саме мислення - хоча і в меншій мірі - все ще присутнє сьогодні.
Оновлення 2016:
Настійно рекомендую статтю, опубліковану кілька днів тому:
- Чому jQuery? Майкл С. Mikowski, автор програм, утворять єдиний веб - книги
Ця стаття в основному є дуже детальною відповіддю на саме це питання. Якби він був доступний, коли я писав відповідь нижче - я б точно його процитував.
Оригінальна відповідь:
Я відповім про jQuery, але це ті самі аргументи, які я чув проти використання YUI, Prototype, Dojo, Ext та деяких інших. Основні аргументи, які я чув:
розмір файлу , який насправді становить 84,6 КБ у випадку з jQuery 3.2.1 - можливо, менший за логотип на середньому веб-сайті і може бути поданий із CDN Google, який, ймовірно, вже є в кеші більшості ваших відвідувачів. Оскільки використання jQuery завжди означає менший розмір ваших власних файлів JavaScript, це насправді може означати менший завантаження, навіть якщо це ще не в кеші браузера.
швидкість - написання чистого JavaScript може бути швидшим, але написання портативного JavaScript здається неможливим для більшості людей. Веб-сайт, який працює швидше, але працює не в кожному популярному браузері, марний у реальному світі. Окрім того, jQuery використовує кілька досить важких оптимізацій, щоб насправді бути шалено швидкими і продовжує ставати ще швидшими з кожним випуском, тому насправді не так просто писати швидший код вручну для чогось іншого, крім тривіальних прикладів. (*)
"інтелектуальна власність" - компанія боїться використання чужого коду - хоча насправді jQuery є відкритим і безкоштовним програмним забезпеченням, яке використовується скрізь від блогу вашої бабусі до Amazon, від Twitter до Bank of America, від Google до Microsoft - якщо вони можуть використовувати його тоді будь-яка компанія може ним скористатися.
Я не пам’ятаю, щоб будь-який інший аргумент був серйозно використаний.
(*) Ось тривіальний приклад: getElementById ('someid') проти jQuery ('# someid')
Чи швидше використовувати getElementById? Так. І звичайно, кожен завжди перевіряє батьківський вузол, щоб зловити, коли Blackberry 4.6 повертає вузли, яких більше немає в документі, так? jQuery робить. І всі розглядають випадок, коли IE та Opera повертають елементи за іменем, а не за ідентифікатором, так? jQuery робить. Якщо ви цього не зробите, тоді ваш код не переноситься, і ви вводите тонкі помилки, які дуже важко знайти. А getElementById - це найтривіальніший приклад, який можна було б знайти - навіть не запускайте мене з подій та AJAX та DOM ...
Оновлення:
Насправді є четвертий результат запитання, чому хтось не хоче використовувати jQuery. Я забув внести його до цього списку, оскільки це насправді не відповідь, а відсутність будь-якої відповіді. Коментар я отримав вчора нагадав мені про це. Це навряд чи буде додано до списку «технічна причина» , але може бути цікава тим не менше , і на самому справі може бути найбільш поширеною реакцією.
Однак, я особисто підозрюю, що це головна причина всіх цих реакцій, - це те, що, на мою думку, є найбільшою перешкодою для прогресу в галузі інформатики: "Я не хочу користуватися нею, тому що ніколи не робив, тому вона повинна не бути таким важливим ".
Колись це була реакція на оптимізацію асемблерів, компіляторів, структурованого програмування, мов вищого рівня, збору сміття, об’єктно-орієнтованого програмування, закриття чи майже всього, що ми зараз сприймаємо як належне - і сьогодні це бібліотеки AJAX. Можливо, колись ніхто не згадає, що колись ми колись взаємодіяли з необробленим DOM API на рівні програми, як зараз ніхто не пам’ятає, що колись ми писали програми, використовуючи необроблені, не прикрашені, незрозумілі шістнадцяткові числа .