Я пытаюсь включить JS-скрипт в файл шаблона уса.Scala: Как включить JS-скрипт в шаблон Mustache в Finatra?
<html>
<head>
<script id="{{app.js}}" type="text/mustache"></script>
</head>
<body>
<div>
Users:
<ul>
{{#users}}
<li>{{name}}</li>
{{/users}}
</ul>
</div>
</body>
</html>
Он расположен в src/main/resources/templates/users.mustache
. Также у меня есть сценарий JS в src/main/resources/public/app.js
.
Несколько слов о бэкэнд. Я использую Finatra
рамки с поддержкой усов из коробки:
get("/users") {
req: Request => {
response.ok.view("/users.mustache", Users)
}
}
Так вот мой вопрос. Как добавить JS-скрипт в мой шаблон Mustache?
UPD
Я также попытался использовать
<script src='{{path}}/public/app.js' type='text/javascript'></script>
Но мое приложение по-прежнему не видит сценарий.
UPD2 (ТНХ к @nuc)
я не нашел хорошее решение, но только это одно:
get("/public/:*") {
req: Request => {
req.params.get("*") match {
case Some(fn) =>
val file = new File("/Users/fink/projects/finatra-demo/src/main/resources/public/" + fn)
response.ok.file(file)
case None => {
response.notFound("Oh no!")
}
}
}
}
Я поместил все активы
src/main/resources/public/*
И на мой взгляд, это должно быть <script src='/public/js/app.js' type='text/javascript'></script>
Это хороший момент. См. Мое обновление. Но до сих пор неясно, как получить статические файлы. – Finkelson
Функция 'response.ok.file (String)' не работает должным образом. Это дает '404 Not Found'. – Finkelson
Определения функций: 'file (file: String)' и 'fileOrIndex (filePath: String, indexPath: String)'. Они используют параметр '-doc.root' как идентификатор местоположения. Удалите 'new File()' и просто поместите строку в функцию, поскольку она уже указывает на 'src/main/resources'. – thepratt