Преимущества и недостатки использования темы вместо плагина для кастомизации

Я заметил, что для кастомизации дизайна рекомендуется использовать темы вместо плагинов. В чём преимущества?

С точки зрения разработки темы кажутся мне слишком громоздкими. Мне нужен ещё один инструмент, чтобы видеть изменения кода в реальном времени — консоль CLI для тем.

Я также понимаю, что темы могут быть выбираемы пользователем (мне эта функция не нужна).

Каковы преимущества тем перед плагинами в продакшене?

Мое мнение:

  1. Выборка во время выполнения при установке, а не на этапе сборки, с нулевым временем простоя.
  2. Проще отключить и удалить.
  3. Доступно для размещённых клиентов, у которых нет доступа к консоли.

Но согласен, что с точки зрения разработчика плагины обычно удобнее для навигации, на мой взгляд.

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

Таким образом, если вам не нужно создавать маршруты, изменять сериализаторы или хранить пользовательские данные, скорее всего, вы сможете достичь своей цели, используя только тему.

Самая большая проблема, с которой мы сталкиваемся при поддержке пользовательских плагинов, — это сбои работы сайта. Обычно это происходит потому, что плагин внедряет изменения в класс или метод Rails в ядре, которые были изменены, но плагин ещё не обновлён с учётом этих изменений. Если что-то изменится на стороне Ember и тем самым нарушит работу темы или компонента темы, сайт может отобразиться некорректно, но его можно быстро отключить с помощью /safe-mode.

Я понимаю вашу точку зрения. Также стоит отметить, что этот gem позволяет разрабатывать тему локально и синхронизировать её с любым сайтом Discourse, к которому у вас есть API-ключ, включая theme-creator.discourse.org. Вам даже не нужно настраивать локальное окружение разработки, если у вас запущен этот gem.

Вау, ответы здесь просто золотые, мне почти нечего добавить.

Единственное, что, на мой взгляд, важно отметить: внутри команды Discourse мы делаем шаги к разделению некоторых плагинов на «плагин для бэкенда» и «тему для фронтенда». Мы обдумываем эту проблему «распространения», когда такие вещи смешаны.

В целом, моя крайне сильная рекомендация: создавайте плагины только в том случае, если это абсолютно необходимо. Когда вам нужно изменить Ruby-бэкенд, у вас нет выбора. Плагин, который вносит изменения только во фронтенд, настоятельно не рекомендуется. Его сложнее поддерживать в актуальном состоянии, и он гораздо менее гибок с точки зрения использования.