2010-09-10 2 views
10

Java Q: Мне нравится CSS для простых веб-страниц, но ненавидьте его, когда дело доходит до сайтов реального мира, потому что вы получаете css explosion и много повторяющихся.Библиотеки Java для управления взломом и повторным использованием CSS?

У меня возникает соблазн использовать Sass и/или Compass, но они являются программами Ruby, которые, скорее всего, потребуют интересной любви Maven + JRuby для работы в Java Web app dev. Это также затрудняет использование Eclipse или любой IDE, поддерживающей синхронизацию с запущенным веб-приложением.

Есть ли лучшая альтернатива для ада, которая является CSS в аду, которая является Java?

ответ

5

Недавно я спустился по той же дороге, используя LessCss, аналогичную технологию. Сначала я попытался внедрить JRuby в мой жизненный цикл сборки. Но, к сожалению, Maven + JRuby - монстр, он медленный, огромный и багги (в два раза меньше, даже если он не начнет, потому что он будет жаловаться на путь к файлу, на котором он работал).

К счастью, теперь есть порт JavaScript LessCss, который я теперь внедряю через Mozilla Rhino. I describe the process in this blog post.

Вчера, хотя я взял его на следующий уровень, создав плагин Maven LessCss для минимизации конфигурации POM и дублирования кода. К сожалению, я не могу поделиться им, потому что это проприетарный код для моего текущего клиента, но решение прост:

Use GMaven to create the Plugin, создать абстрактное базовое mojo, которое вызывает компилятор LessCss и несколько конкретных реализаций, которые настраивают базовый mojo для разных ресурсов комплектов:

eg

  • lesscss:compile
    составляет от всех <resources> в ${project.build.outputDirectory}
  • lesscss:test-compile
    компилирует от всех <testResources> в ${project.build.testOutputDirectory}
  • lesscss:war-compile
    (компилирует из всех src/main/webapp в ${project.build.directory}/${project.build.finalName} , взорванные войны каталог)

Так что пока я не могу помочь вам с SASS (кроме вас просить авторизацию или портировать его в Groovy, Java или JavaScript), я думаю, что я показал вам реальную альтернативу.

Конечно, вы также можете реализовать плагин Maven в java без Groovy (также встраивая JavaScript через Rhino), но я думаю, что в Groovy это проще.

+0

Интересное сообщение +1 –

+0

На моем диске для работы до того, как я прочитал ваш ответ, я подумывал написать построитель Groovy для CSS и микро DSL, подобный SASS, с сервлет-фильтром или сервлетом для обслуживания CSS (то есть, что JSP/GSP - HTML, но для CSS). Отличный пост! –

+1

@Adam: Как я писал в своем блоге, что-то очень похожее уже существует для Less и Wicket: http://www.richardnichols.net/2010/06/less-css-in-wicket-using-mozilla-rhino/ , BTW Если вы когда-либо пишете такой Groovy Builder, пожалуйста, отправьте его здесь. –

0

Интерфейс командной строки Sass очень тщательный. Если вы выберете sass --update в своих правилах сборки, вы можете просто использовать стандартный исполняемый файл Sass (либо через Ruby, либо JRuby) без необходимости интегрировать его непосредственно в свою сборку.

+0

Независимо от того, его внешний вызов или внутренний (JRuby), он все еще интегрирован со сборкой. Я все еще должен установить JRuby или Ruby на машине сборки и каждой машине разработчиков. –

+0

Это правда (конечно же, это относится и к Rhino + Less). В будущем мы намерены выпустить пакет Sass + Ruby «все в одном», который, надеюсь, упростит управление. –

+0

Нет, это не относится к rhino + less, так как я могу загрузить все необходимые компоненты через разрешение зависимости maven, следовательно, сделать сборку воспроизводимой в любом месте. с jruby быть практически непригодным из maven и ruby, не работающим на java vm, на самом деле нет возможности автоматизировать sass в maven build. Это ничего против Сасса, это крутая технология, но интеграция maven/ruby ​​сосет. Не твоя вина, не моя, и никаких оснований понизить мой ответ. –

1

Хорошее решение для использования sass с eclipse отвечает на вопрос this.

3

В итоге я использовал wro4j.

Очень рекомендую библиотеку, поскольку она будет обрабатывать многие вещи, такие как меньше css и кофе CoffeeScript.

+0

Является ли решение wro4j pure java? Кажется, использует less.js? У меня в интранете высокая изоляция от публичной сети, некоторые компьютеры полностью изолированы. –