Как стать автором
Обновить

Комментарии 13

На любую view будет загружаться полная конфигурация всех WebJar'ов? Т.е. если библиотека используется только на одной какой-то view, мы её всё равно загрузим во всех? Я правильно понял?
Да, все правильно

Но можно делать кастомные конфиги

Вместо

@Html(org.webjars.RequireJS.getSetupJavaScript(routes.WebJarAssets.at("").url))


пишем

var require = {
    callback: function() {
      // default requirejs configs
      @for(webJarJson <- org.webjars.RequireJS.getSetupJson(routes.WebJarAssets.at("").url).values()) {
        requirejs.config(@Html(webJarJson.toString));
      }
}


Как видим в здесь цикл, который перебирает все WebJars, в него можно добавить filter и пропускать ненужные WebJars

И кстати сразу хочу предупредить при добавлении AngularJS в качестве WebJars, сгенирится весьма внушительный конфиг

Если это вызывает особое раздражение, то разумеется лучше писать конфиг для RequireJS руками
Мне не понятно зачем его вообще генерить? Я на темплейте делаю так

@Html(org.webjars.play.RequireJS.setup(app))


Где app это переменная, которая хранит путь до файла модуля. Сам файл например такой

'use strict';

require(['angular','bootstrap'],
    function(angular) {
        angular.module('cag', []);
        angular.bootstrap(document, ['cag']);
    });


И у меня на странице зависимости только те которые нужны.

И ещё один вопрос. А зачем ReqireJS явно указан в WebJars?
Насколько я помню RequireJS с определенной версии поставляется уже вместе с Play 2.
А всё понял. По сути это всё одинаково. Однако у вас всё кэшированно и быстро.
По моему слегка изврат.
Создается впечатление что ребята которые работают только на бекенде вообще не хотят использовать очень хорошо обкатанные методики и подходы которые уже не первый год отлично работают в фронт-енде, вместо этого придумывая собственный велосипед.

Идея вытягивания js/css зависимостей из мавен репозитория мне решительно не нравиться, так как в случае более-менее сложных задач на фронт-енде будет очень не хорошо зависеть от того есть ли нужный WebJar или нет (список конечно очень большой но некоторых хороших библиотек я там не увидел, а зятягивать часть через WebJar а часть еще как-то — моветон)
Я бы посмотрел в сторону bower.io/ для решения такой задачи. тут ребята используют git репозитории для получения необходимых артефактов, в бовере храниться только регистр.

Также очень советую посмотреть на gulpjs.com/ или gruntjs.com/ и всевозможной обработки / минификации / обфускации / ужатия картинок / .
Я бы сказал это очень изврат.

Но мне человеку далекому от фронтэнда не хватило бы терпения. Сейчас всяких штук в окончанием JS столько, что глаз коли. Вот если бы кто-нибудь сделал верно правильный template для activator, где было бы показано как эти все штуки подружить, я был бы очень рад. Сейчас я как раз активно работаю на стэке play/angular и да, не хватает многих плюшек. Например мне хотелось бы весь фронтэнд как-то отделить от бэкэнда и каким-либо образом покрыть хотя бы минимально тестами. Но вот так и живем. Кто во что горазд, гром их порази.
npm
npm can be used as well as WebJars by declaring a package.json file in the root of your project. Assets from npm packages are extracted into the same lib folder as WebJars so that, from a code perspective, there is no concern whether the asset is sourced from a WebJar or from an npm package.


Гласит документация Play Framework

Нужно будет поэкспериментировать в этом плане
Надо как-нибудь будет поделиться наработками.
и можно еще настроить бридж между gulp/grunt и maven/sbt
есть примеры?
На github'e думаю их довольно много, примеров.
У меня например, на одном проекте используется grunt-maven-plugin, с SBT к сожалению не интегрировал, из-за ненадобности, со всем пока play справляется, но по запросу 'sbt grunt plugin' там целых три штуки, возможно и примеры там есть.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории