2014-09-26 58 views
3

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

我目前的航线代码:

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

我的HTML:

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

这显然只是最终的页面

我上打印出{名}知道我可以这样做:

val indexRoute = { 
    get { 
    path("") { 
     val name = "hello" 
     complete { 
     <html> 
      <body> 
      <h1>{name}</h1> 
      </body> 
     </html> 
     } 
    } 
    } 
} 

但我希望有一种方法可以将视图从路由逻辑本身和它们自己的文件中分离出来。这是可行的还是我需要在路由中定义HTML?

+1

喷雾拍摄并没有真正有一个表现层像你使用的是简单的例子。它通常用于提供REST API。你看过Play吗!框架?它有一个模板引擎,可以像你想要的那样工作。 – Gangstead 2014-09-26 03:34:42

+0

+1为Play框架,如果你需要模板引擎来构建用户界面 – 2014-09-26 04:11:24

+0

谢谢,我用过play,希望有更轻量级的东西。也许喷雾不是正确的决定。 – pjo336 2014-09-26 18:10:01

回答

2

您可以尝试使用Twirl您的需要。

这是一个从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> 
+0

谢谢你们,我不知道他们已经把这件事从游戏中拉出来 – pjo336 2014-09-26 18:10:39

+2

它实际上是从喷雾中拉出来的,然后也作为一个独立的作品保留下来,可以再次用于喷雾。 – matanster 2015-01-25 14:44:41

相关问题