0

我想使用带有 Scala 的模板引擎创建 js 文件。流行的 Scala 模板引擎,即 Play 和 Scalate,是否可以实现?如果可能的话,使用它们中的任何一个的优缺点是什么?

4

2 回答 2

1

只需使用.jsext 创建视图,即:app/views/myScript.scala.js和虚拟内容:

@(message: String)

alert("@message");

然后在控制器中添加一个动作:

def myScript = Action {
  // use views.js... NOT views.html... !
  Ok(views.js.myScript.render("Whoha! I'm dynamic JS in Scala :)"))
}

或在 Java 版本中:

public Result myScript(){
    // use views.js... NOT views.html... !
    return ok(views.js.myScript.render("Yey! I'm dynamic JS in Java :)"));
}

将路由添加到此操作:

GET    /my-script    controllers.Application.myScript()

所以你可以直接使用这条路线:

<script src="/my-script"></script> 

请注意,Play 应该Content-Type:text/javascript; charset=utf-8在响应中返回有效,无论如何取决于您使用的版本,可能需要在您的操作中手动强制执行此操作(使用浏览器的检查工具检查响应类型)

于 2016-03-10T10:29:21.260 回答
0

这实际上取决于您想要实现的目标,即您的 JavaScript 代码将有多复杂,但是,除非它非常小而简单,否则我建议使用Scala.js。这样,您基本上将编写一些将编译为 JavaScript 的 Scala 代码,并且您应该能够将编译后的 JavaScript 包含到您的 Play 应用程序中。

编写 Scala 与 JavaScript 的优势应该非常明显(类型安全,使用大量现有的 Scala 库)。缺点是 Scala -> JavaScript 编译会有一些延迟,并且缺乏 Scala.js 和 Play 的无缝集成,就像 Play 拥有自己的模板引擎一样。让这两者一起工作的额外工作是否值得由您决定。

于 2016-03-10T10:36:35.153 回答