Плагин

Оригинальное название: plugin

Коротко

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

Что такое «Плагин»

Архитектура с плагинами появилась как ответ на противоречие: основная программа должна оставаться стабильной, а пользователям нужны тысячи разных функций. Решение — оставить в ядре «разъёмы». Программа заранее объявляет, в какие моменты и какими способами в неё можно встроиться, а плагин подключается к этим точкам. Так устроены CMS, редакторы кода, графические программы, системы сборки, браузеры (там это чаще называют расширениями).

Как это работает

У любой системы плагинов три составляющие. Первая — способ обнаружения: папка, которую сканирует программа, или реестр в настройках. Вторая — контракт: интерфейс, который плагин должен реализовать, или набор событий, на которые он может подписаться. Третья — жизненный цикл: включение, отключение, удаление, обновление. В WordPress контракт — это хуки, подробнее — в статье «Плагин WordPress». В 1С-Битрикс похожую роль играют модули с обработчиками событий.

Пример: плагин для jQuery

Библиотека jQuery даёт простую точку расширения — объект $.fn. Всё, что туда добавлено, становится методом любой выборки элементов:

$.fn.highlight = function ( color ) {
  return this.css( 'background-color', color || '#fff3a0' );
};

$( '.price-new' ).highlight();

Ядро jQuery при этом не меняется, а новый метод работает так же, как встроенные.

Плюсы и цена

  • Ядро обновляется отдельно от расширений, а лишние функции не грузятся, пока не установлены.
  • Сторонние разработчики могут развивать экосистему без доступа к основному коду.
  • Но каждый плагин — чужой код с теми же правами, что и программа. Уязвимость в нём — уязвимость всего сайта.
  • Плагины конфликтуют между собой и с новыми версиями ядра. Чем их больше, тем выше шанс, что очередное обновление что-то сломает.

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

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение