Обычная потребность в приложениях — это управление вашими веб-зависимостями, такими как Bootstrap и jQuery . Самый простой способ сделать это — загрузить соответствующие файлы, сохранить их в каталоге приложения и сослаться на них в приложении. У этого подхода есть пара недостатков.
Для начала не всегда понятно, какая версия ресурса была загружена. Иногда это кодируется в названии файла или в структуре каталога, например, «jquery-1.9.0.min.js», но я думаю, что ответственность за сохранение этого лежит на команде разработчиков. Другой недостаток, который я вижу в этом подходе, заключается в том, что он довольно ручной. Например, обновление версий библиотек JavaScript с их соответствующими зависимостями может быть довольно утомительным. Поэтому введите WebJars , очень простую библиотеку, которая интегрируется с Play, а также с другими веб-фреймворками, которая упаковывает веб-библиотеки на стороне клиента в файлы JAR и позволяет управлять ими как зависимостями SBT (или Maven и Gradle). Эта статья покажет вам шаги, необходимые для интеграции WebJars в пример приложения Play.
- Предполагая, что вы начинаете с ванильного приложения Play, первое, что вам нужно сделать, это отредактировать файл build.sbt . Добавьте зависимость WebJar. Ваш файл build.sbt должен выглядеть следующим образом.
name := "sample-play-with-webjars" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, "org.webjars" %% "webjars-play" % "2.2.0" ) play.Project.playJavaSettings
- Добавьте зависимость WebJars, такую как Bootstrap, в файл build.sbt . Вы можете найти список зависимостей на официальном сайте WebJars . Я включаю Bootstrap в свое приложение Play в качестве примера.
name := "sample-play-with-webjars" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, "org.webjars" %% "webjars-play" % "2.2.0", "org.webjars" % "bootstrap" % "3.0.1" ) play.Project.playJavaSettings
- Теперь перейдите к файлу conf / routs и добавьте маршрут к контроллеру WebJarsAssets, который будет использоваться при доступе к зависимостям.
# Routes # This file defines all application routes (Higher priority routes first) # ~~~~ # Home page GET / controllers.Application.index() # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file) GET /webjars/*file controllers.WebJarAssets.at(file)
- Теперь добавьте ссылку на загрузочный css из вашего файла app / views / main.scala.html через только что определенный маршрут WebJar.
Это должно выглядеть так:
@(title: String)(content: Html) <!DOCTYPE html> <html> <head> <title>@title</title> <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> <link rel='stylesheet' href='@routes.WebJarAssets.at(WebJarAssets.locate("css/bootstrap.min.css"))'> <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script> </head> <body> @content </body> </html>
- Чтобы доказать, что все работает, я изменил app / views / index.scala.html, чтобы использовать пример индикатора выполнения из Bootstrap, чтобы сделать действительно очевидным, что WebJars настроен правильно и что зависимость Bootstrap разрешена. Ваш файл должен выглядеть следующим образом:
@(message: String) @main("Testing out WebJars") { <div class="page-header"> <h1>Progress bars</h1> </div> <div class="progress"> <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"><span class="sr-only">60% Complete</span></div> </div> }
- Теперь, если вы запустите приложение и перейдете по адресу http: // localhost: 9000, ваша домашняя страница по умолчанию должна выглядеть следующим образом.
$ play run
Пример кода для этой статьи
здесь . Я надеюсь, что эта статья продемонстрировала вам лучший способ управления вашими веб-зависимостями.