将Scala值传递给资源

将Scala值传递给资源,scala,spray,Scala,Spray,我正在尝试使用Spray来满足基于Scala的web应用程序的路由需求。我想知道如何将Scala val传递给前端资源,例如在HTML文件中使用变量。实现这一目标的适当方式是什么?(如果可能的话) 我当前的路线代码: val indexRoute = get { path("") { val name = "hello" getFromResource("views/index.html") } } 我的html: <!DOCTYPE html

我正在尝试使用Spray来满足基于Scala的web应用程序的路由需求。我想知道如何将Scala val传递给前端资源,例如在HTML文件中使用变量。实现这一目标的适当方式是什么?(如果可能的话)

我当前的路线代码:

val indexRoute =
  get {
    path("") {
      val name = "hello"
      getFromResource("views/index.html")
    }
}
我的html:

<!DOCTYPE html>
<html lang="en">
<body>
  <h1>{name}</h1>
</body>
</html>

{name}
这显然只是在页面上打印出{name}

我知道我可以做一些事情,比如:

val indexRoute = {
  get {
    path("") {
      val name = "hello"
      complete {
        <html>
          <body>
            <h1>{name}</h1>
          </body>
        </html>
      }
    }
  }
}
val indexRoute={
得到{
路径(“”){
val name=“你好”
完整的{
{name}
}
}
}
}
但我希望有一种方法可以将视图与路由逻辑本身分离,并放入它们自己的文件中。这是可行的,还是我需要在路由中定义HTML?

您可以根据需要尝试使用

从github页面示例中获取的一个简短示例

@(name: String, age: Int = 42)
<html>
@* This template is a simple html template --- (this text btw. is a comment and is not rendered) *@
<h1>Welcome @name!!</h1>
<p>You are @age years old, @(if(age < 21) <i>shouldn't you be in bed ?!</i> else <i>have a great      evening !</i>)</p>
</html>
@(姓名:字符串,年龄:Int=42)
@*此模板是一个简单的html模板---(顺便说一句,此文本是注释,不呈现)*@
欢迎@name!!
你已经@age year,@(如果(年龄<21岁)你不应该躺在床上吗?!否则祝你晚上愉快!)


Spray并不像您现在使用的那样有一个表示层。它通常用于提供RESTAPI。你看过这出戏了吗!框架它有一个模板引擎,可以像你想要的那样工作。+1 for Play framework如果你需要模板引擎来构建UIThanks,我用过Play,希望能有更轻量级的东西。也许喷雾不是正确的决定。谢谢你,我不知道他们已经把它从游戏中拉出来了。它实际上是从喷雾中拉出来的,然后作为一个独立的部件进行维护,可以再次在喷雾中使用。