Пользовательские плагины CSS и JS в Grails
Я строю плагин Grails (grails-myorg.zip
) который будет содержать повторно используемый код / артефакты, которые должны использоваться каждым приложением Grails в нашей организации. Это включает в себя пользовательские файлы CSS/JS, которые помогают нашим приложениям выглядеть единообразно.
Мне интересно, каков наилучший ход действий здесь:
- Создать
grails-myorg-themes.zip
плагин, который просто включает в себя повторно используемые файлы CSS и JS, а затем делает его плагином / зависимостью времени выполнения (используяBuildConfig.groovy
) основнойgrails-myorg.zip
плагин; или же - Поместите файлы CSS/JS в основной
grails-myorg.zip
подключаемый модуль, но затем используйте подключаемый модуль ресурсов Grails для настройки файлов для всех последующих зависимостей.
В конечном итоге единственным требованием является:
Каждый раз, когда разработчик включает в себя основной grails-myorg.zip
Плагин является частью плагинов их приложения, тогда пользовательские файлы CSS/JS будут доступны (через URL) во время выполнения для HTML-файлов приложения. Таким образом, у них есть возможность включить стили CSS и другие вещи JS, определенные в этих общих файлах, в свои приложения.
Какую стратегию я должен использовать, почему и как будет выглядеть конфигурация?
1 ответ
Я не вижу необходимости иметь grails-myorg-themes
плагин, если единственная цель grails-myorg
просто быть поставщиком ресурсов для приложения Grails.
Второй вариант выглядит как хорошее начало для выложенного сценария. Если ресурсы меняются и / или обновляются, версионности плагина будет достаточно.
Какие:
- Вам не понадобится плагин ресурсов в плагине, приложение должно использовать плагин ресурсов. Если на всех ресурсах плагин используется в
grails-myorg
Затем он должен быть исключен из пакета с помощьюexport = false
в конфиге сборки. - Создавайте специфичные для бизнеса модули ресурсов, которые можно легко использовать в приложении. Например:
Файл ресурсов плагина должен выглядеть примерно так: dashboard
(скажем, корпоративный модуль, который отражает бренд) как модуль, который может быть required
в приложении на определенных страницах / шаблонах.
//MyOrgResources.groovy
modules = {
dashboard {
resource url: 'js/dashboard/dashboard.js'
resource url: 'css/dashboard/dashboard.css'
}
}
И так далее и тому подобное для общих доменных ресурсов.
Зачем:
Плагин говорит само за себя, упоминая, что "любой ресурс уровня предприятия, связанный с доменом или модулем" может быть передан из этого плагина. В конце концов, это будет полезной идеей, только если плагин задокументирован и соответствующим образом распределен по командам, так что никто не изобретает колесо заново.