Спасибо всем.
Я уже видел это раньше, но рад получить подтверждение, что добавлять плагины Ember нельзя, пока не будет завершено это обновление. Значит, скоро появится возможность добавлять плагины Ember — как только обновление будет завершено. Это звучит отлично.
Думаю, это интересный вопрос. Вот моё мнение:
Что касается использования «абстрагированных вещей» Discourse по сравнению с плагинами Ember: я могу ошибаться, но мне кажется, что использование плагинов Ember для конкретных задач в плагинах может быть проще в поддержке, особенно в случаях, когда вы пытаетесь сделать что-то отличное от того, что уже реализовано в Discourse. Вот моя логика:
Например, если вы хотите добавить новое выпадающее меню в плагин. Это различие, вероятно, важно — я говорю именно о попытках реализовать в плагине что-то новое, чего нет в исходном коде Discourse, и вопрос заключается в том, стоит ли начинать с методов Discourse или использовать отдельный плагин.
Часто у вас действительно нет выбора. Например, если я хочу добавить пользовательское поле к темам, я всегда буду дорабатывать существующие методы и код Discourse.
Но если речь идёт о целенаправленной функциональности — например, выпадающем меню для новой цели — то я уже оказываюсь в ситуации, когда использование методов Discourse потребует их адаптации к задачам, для которых они изначально не предназначались.
Вариант 1: Я мог бы попытаться взять код select-kit, который используется, например, в category-chooser, и вставить его в новое место (не связанное с категориями), а затем попытаться настроить его под то, что нужно мне, вместо категорий. Это та задача, которую я ранее описывал как сложную.
К тому же, это может быть трудно поддерживать — ведь если команда Discourse изменит что-то в том, как работает код select-kit в category-chooser, это может повлиять на моё новое настроенное выпадающее меню, причём неожиданным образом (поскольку я настроил его так, чтобы оно работало немного иначе, чем настоящее выпадающее меню для выбора категорий).
Вариант 2: Я мог бы использовать что-то из Ember — надёжное, но при этом предназначенное для кастомизации, где я могу довольно чётко видеть, как работает код. В таком случае я могу упустить новые крутые функции, которые команда Discourse может добавить в свои выпадающие меню, но зато мне будет проще контролировать работу моего выпадающего меню. Так что, думаю, это, вероятно, лучший вариант, если он возможен.
Вариант 3: Написать всё с нуля. Именно к этому я обычно и прихожу. Когда код написан, приятно иметь код, который я полностью понимаю и могу настраивать. Но, конечно, это занимает больше времени, и (по крайней мере, начальные версии) вряд ли будут такими мощными и надёжными, как решения, созданные командой Discourse или командой Ember.