Автор оригинала: Humayun Shabbir.
В этой статье я покажу вам, как модифицировать jQuery, используя методику под названием «Patching Monkey Patching 🐵» или «Утиная штамповка 🦆». Не волнуйтесь, нет жестокости животных
Это общая техника на динамических языках, таких как JavaScript, Python, Ruby для замены поведения программы во время выполнения.
По словам Википедии:
Патч Monkey – это способ программы расширять или изменять поддерживающую системную программное обеспечение локально (затрагивая только запущенный экземпляр программы). Полная статья
Смущенный? Давайте посмотрим пример, чтобы сделать это простым 💡.
Основной пример ✨.
Давайте посмотрим на базовую функцию jQuery. В этом случае наша функция устанавливает текст данного элемента «Привет, мир!».
Вот наш HTML код.
Document
и Javascript
$(document).ready(function() { $.fn.hello = function() { this.text('Hello, World!'); }; $('#button1').click(function() { $('#message').hello(); }); });
Выход Теперь, давайте напишем патч, который будет добавлять что-то в существующий текст. Итак, в основном наш патч добавит текст на оригинал «Привет, мир!».
Вот наша исправленная версия кода. Это написано как iife (сразу вызывало выражение функции).
📝 Примечание: Вы можете найти больше деталей о жизни здесь Отказ
$(document).ready(function() { $.fn.hello = function() { this.text('Hello, World!'); }; $('#button1').click(function() { $('#message').hello(); }); (function($) { var original = $.fn.hello; $.fn.hello = function() { original.apply(this, arguments); if(this.text() === 'Hello, World!') { this.append(' and Hello, Monkey Patching!'); } } }(jQuery)); });
Выход Итак, теперь мы понимаем основы. Давайте посмотрим на реальный мир. Давайте изменим jQuery, используя патч обезьяны.
Изменение jQuery 💲.
Давайте модифицируем себя jQuery и посмотрим, как он даст нам разные вывод. Я собираюсь показать, как мы можем исправить $. wow ()
Чтобы получить больше дружелюбной даты и времени. Реализация по умолчанию возвращает номер, позвонив (Новая дата) .gettime ()
Отказ
(function($) { var orig = $.now; $.now = function() { return new Date().toLocaleString(); } }(jQuery))
Выход Там это ✅
Мы успешно исправили jQuery, и теперь мы получаем более удобную пользовательскую стоимость даты/время от $. wow ()
Отказ Мы можем использовать ту же методику, чтобы исправить другие функции jQuery и плагины.
Окончательные слова 📝.
Патч обезьян имеет несколько преимуществ в определенных ситуациях, и это может быть очень полезным, если это сделано с осторожностью и вниманием.
Преимущества:
- Вы можете написать патч, чтобы исправить проблему, пока она не зафиксирована в официальном выпуске jQuery.
- Вы можете изменить функциональные возможности без изменения фактического кода jQuery
- Это легко удалить его, потому что вы не модифицируете исходный код jQuery, вы можете просто удалить файл исправления, чтобы удалить его.
Подводные камни:
- Он может сломать функциональность из-за конфликта с существующей переменной или функцией.
- Если несколько патчей пытаются изменить функцию, наносится последний выполненный патч.
- Патч может перестать работать, если появятся изменения в новее версии jQuery.
Я надеюсь, что это было полезно. Пожалуйста, напишите в комментариях, если у вас есть какие-либо вопросы или предложения. Я постараюсь вернуться к вам самым ранним. 👍.