Scala:如何在Finatra中将JS脚本包含到Mustache模板中?

时间:2015-12-03 22:25:31

标签: javascript scala mustache finatra

我试图在我的胡子模板文件中包含一个JS脚本。

<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。我在src/main/resources/public/app.js中有一个JS脚本。

关于后端的几句话。我使用Finatra框架支持Mustache开箱即用:

  get("/users") {
    req: Request => {
      response.ok.view("/users.mustache", Users)
    }
  }

所以这是我的问题。如何在我的Mustache模板中添加JS脚本?

UPD

我也尝试使用

<script src='{{path}}/public/app.js' type='text/javascript'></script>

但我的应用仍然没有看到该剧本。

UPD2 (thx to @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>

1 个答案:

答案 0 :(得分:-1)

你需要有一个额外的路径来服务你的js文件,命名为你正在使用的前缀/约定。

get("/assets/js/:file") { request: Request =>
    response.ok.file(request.getParam(file))
}

请参阅http://twitter.github.io/finatra/user-guide/files/