У нас есть платформа, которая содержит несколько приложений в одном интерфейсе. Существует одна общая таблица стилей и отдельные таблицы стилей для каждого приложения из соображений производительности. Вся эта платформа брендирована для нескольких поставщиков, у каждого свои цвета и т. д. Мы делаем это, загружая другую таблицу стилей для данного брендинга, которая просто содержит переопределения стилей по умолчанию.
Теперь мы думаем о внедрении LESS для улучшения и организации наших таблиц стилей. Но мы изо всех сил пытаемся найти чистое решение для настройки переменных для каждого бренда.
Вот структура нашего проекта:
platform/
css/
general.css (general styles for all applications)
app1.css (specific styles for application 1)
app2.css (specific styles for application 2)
...
branding1.css (color overrides for branding 1)
branding2.css (color overrides for branding 2)
...
С LESS мы бы подумали об этой структуре:
platform/
css/
variables.less (containing default colors, etc.)
general.less (general styles for all applications)
app1.less (specific styles for application 1)
app2.less (specific styles for application 2)
...
branding1.less (variables overrides for branding 1)
branding2.less (variables overrides for branding 2)
...
Теперь, как мы можем легко применить переопределение брендинга ко всем таблицам стилей?
На данный момент мы нашли создание файлов less для всех таблиц стилей, например, для general.less
для создания general.branding1.less
:
@import "general.less";
@import "branding1.less";
Это создает желаемый результат для общих стилей брендинга 1, и, конечно же, мы можем сделать это для каждой таблицы стилей приложения. Но это приведет к n * m файлам (приложения * брендинг) только с двумя такими строками импорта. Это не похоже на хорошее решение (не говоря уже о дополнительной обработке для ссылки на эти файлы в заголовке HTML) - разве нет ничего лучше?
Примечание. Мы используем Web Essentials для предварительной обработки файлов перед развертыванием. Предварительная обработка на стороне клиента невозможна.