我想使用带有 Scala 的模板引擎创建 js 文件。流行的 Scala 模板引擎,即 Play 和 Scalate,是否可以实现?如果可能的话,使用它们中的任何一个的优缺点是什么?
问问题
303 次
2 回答
1
只需使用.js
ext 创建视图,即: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 回答