1

我正在尝试在我的 mustache 模板文件中包含一个 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。我也有一个 JS 脚本src/main/resources/public/app.js

关于后端的几句话。我正在使用Finatra支持 Mustache 的框架:

  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>

4

1 回答 1

-1

您需要有一个额外的路由来提供您的 js 文件,以您正在使用的前缀/约定命名。

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

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

于 2015-12-14T13:32:31.883 回答