Play Framework: public/vs app/assets/

Согласно этот документ, каталог public/ должен содержать статические активы, которые могут обслуживаться как они есть, а необязательный app/assets каталог должен содержать любые активы, которые необходимо обработать, например, с помощью компилятора minify во время фазы сборки.

В случае SPA (одностраничное приложение) активы будут включать JavaScript, CSS и файлы изображений... так это означает, что файлы изображений должны храниться в public/images, в то время как файлы JavaScript и CSS в app/assets/

Затем мне также необходимо интегрировать сторонний модуль, который состоит из как мини-библиотек JavaScript, так и неминифицированных файлов JavaScript, которые необходимо настроить... Как мне это сделать? Должен ли я хранить стандартные, уже заминированные активы в public/ и переместить настроенные файлы JavaScript на app/assets/javascripts/?

Ответ 1

Да, то, что вы описали, верно.

Воспроизведение объединяет содержимое из "управляемых" и "неуправляемых" активов в одну папку во время процесса сборки (как указано в документах https://www.playframework.com/documentation/2.3.x/AssetsCoffeeScript)

Но управляемые aseets (т.е. app/assets) скомпилируются - например, javascript запускается через jshint, а затем скомпилированные версии копируются. Неуправляемые активы (т.е. public) берутся "как есть", без обработки.

Очевидно, что нет никакого вреда, помещая ваш собственный javascript в неуправляемый каталог public, но тогда вы не пользуетесь возможностями компиляции, которые дает вам Play.

Для библиотеки, которая содержит настраиваемые файлы, это зависит. Я бы определенно поставил мини файлы в public, потому что иначе вы можете получить ошибки компиляции из jshint. Индивидуальные файлы - зависит от степени настройки. Если это небольшая настройка настроек, я могу рассмотреть возможность их совместного использования с другими файлами библиотеки только для ясности. Но если это что-то, что находится в активной разработке и связано с написанием кода, я бы поставил его app/assets, чтобы получить преимущества синтаксиса проверки jshint.

Кроме того, в качестве дополнительной заметки вы можете поместить свои изображения в app/assets - они будут просто скопированы без изменений. Но я нахожу, что он имеет тенденцию замедлять работу, вызывая лишние копии при восстановлении, поэтому их использование в неуправляемом каталоге работает лучше.

Ответ 2

Я храню все в общей папке: css, javascript, изображения и даже меньше файлов (эту документацию рекомендуется поместить в папку app/asset). он будет автоматически скопирован в папку с активами, и все будет работать должным образом.

Для вашей сторонней библиотеки js, если это просто js (minified или нет), поместите его в общую папку. Если есть кофе script/less files, рассмотрите следующую документацию и поместите все это в папку с активами.

Если ваши файлы находятся в общей папке, добавьте эти строки в свои шаблоны:

<link href="@routes.Assets.at("stylesheets/myCss.css")" rel="stylesheet">
<script src="@routes.Assets.at("javascripts/myJs.js")" type="text/javascript" defer="defer" ></script>