$ проти jQuery


74

Ми переходимо з MooTools на jQuery на роботі. У мене є колега, який сказав мені ніколи не використовувати $як префікс при використанні методу jQuery (якщо я його правильно зрозумів). Він сказав, що замість цього, більш доречним або безпечним способом (я насправді не пішов за ним) було використовувати jQuery..

Тому замість $.plugin(), jQuery.plugin()слід використовувати, наприклад.

Чому це так? Яку різницю він робить з $/ jQuery? Чи варто забути про знак долара як про мого аксесуара? Тільки за певних обставин?


можливий дублікат конфлікту jQuery та MooTools
Джим Г.

Відповіді:


87

Чому це так? Чи правильно розрізняти його $ / jQuery?

Оскільки майже кожна бібліотека JavaScript визначає функцію, яка називається $. Коли в одному документі багато бібліотек, можуть з’являтися конфлікти. Якщо ви впевнені, що jQuery є і завжди буде єдиним сценарієм, що визначає цю функцію, я не мав би нічого проти використання $.

jQuery визначає гарне рішення для вирішення конфліктів: jQuery.noConflict . За допомогою цієї функції ви можете визначити своє власне ім'я, завдяки якому jQuery буде доступним, наприклад

var $jq = jQuery.noConflict(true);

Виклик цієї функції призведе до відновлення попередніх значень для змінних $ і jQuery, коли вони існували до ініціалізації jQuery. Я не пам’ятаю, чи намагалася якась інша бібліотека вирішити конфлікти імен.

Якщо ви хочете постійно використовувати $ замість jQuery, ви можете запустити свій код в окремій приватній області, яка містить визначення $, використовуючи функцію самовиклику.

(function($){
   // your code goes here
   $("body").append("<p>Hello World!</p>");
})(jQuery); // or even jQuery.noConflict()

10
Тільки для того, щоб розібратися з термінологією: те, що ви подали, - це не закриття, а просто функція самозаклика Закриття - це коли ви визначаєте функцію всередині іншої функції та повертаєте її.
Andreas Grech,

1
Моя помилка. Я не знаю, про що я думав, пишучи свою відповідь. Змінив текст.
Рафаель

2
+1 для IIFE (вираз функції, що викликається негайно). ІМО це переважно використовувати, noConflictоскільки сфера дії чітко визначена.
ach

1
Вам не здається, що передача "true" у noConflict може спричинити проблеми при використанні плагінів? Я ще не пробував, але в документах jQuery згадується, що інші плагіни jQuery покладаються на змінну 'jQuery' і можуть не працювати належним чином у цій ситуації.
PrasadW,

11

$ псевдонім jquery і, теоретично, може бути псевдонімом чогось іншого в іншій включеній бібліотеці чи сценарії, що може призвести до плутанини або ще гірше. Якщо ви використовуєте лише jquery, використання $ має бути нормальним.


5

Це уникнути конфлікту з іншими бібліотеками, такими як Prototype, яка використовує ті самі $.

Я віддаю перевагу $, і немає проблем з його використанням, якщо ви використовуєте лише Jquery.


5

На додаток до інших відповідей навколо конфліктів з іншими бібліотеками, назва змінної завжди повинна описувати змінну. jQuery- набагато описовіша назва змінної, ніж $.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.