Playframework 在Play2.x中,如何使用丑陋的js模板

Playframework 在Play2.x中,如何使用丑陋的js模板,playframework,production-environment,Playframework,Production Environment,在我的一个Play2.4应用程序(Scala)中,我有通过Twirl(模板引擎)生成的JS文件,因此我可以使用内部变量 有没有一种方法可以在Prod中缩小这些JS文件?您可以尝试的一种方法是创建一个自定义播放过滤器,该过滤器使用基于Java的JavaScript压缩器。下面是我发现的一个例子: 另一种方法是使用一个模板,将生成的JS传递到上面的类中。您可以使用它。首先,您需要将插件添加到plugins.sbt文件中: addSbtPlugin("com.typesafe.sbt" % "sbt

在我的一个Play2.4应用程序(Scala)中,我有通过Twirl(模板引擎)生成的JS文件,因此我可以使用内部变量


有没有一种方法可以在Prod中缩小这些JS文件?

您可以尝试的一种方法是创建一个自定义播放过滤器,该过滤器使用基于Java的JavaScript压缩器。下面是我发现的一个例子:

另一种方法是使用一个模板,将生成的JS传递到上面的类中。

您可以使用它。首先,您需要将插件添加到plugins.sbt文件中:

addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3")
接下来,修改project build.sbt文件并启用sbt web:

lazy val root = (project in file(".")).enablePlugins(SbtWeb)
声明uglify sbt web插件执行:

pipelineStages := Seq(uglify)
这将使构建在生成发布包(使用activator dist)时丑化您的javascript资产。 如果您想在您的开发环境中测试丑八怪,请使用以下行:

pipelineStages in Assets := Seq(uglify)

最后,您需要修改在twirl模板中加载javascript资产的方式。代替@routes.Assets.at(“something.js”),现在使用@routes.Assets.versioned(“something.js”)

您使用的是Java还是Scala?很好的方法,但我正在寻找一种不太黑客的、可以在build.sbi中设置的播放嵌入式选项。我认为,如果您使用
public
中的文件,这是可行的。我有Twirl模板,因此无法使用
版本控制的
调用它们。这适用于应用程序/资产或公用文件夹中的javascripts。如果您使用@routes.Assets.at()加载twirl模板,则它应该可以使用twirl模板,而不是。参见错误<代码>类型不匹配
[error]找到:play.api.mvc.Call
[error]必需:controllers.Assets.Asset
[error]
你说得对,它可能无法工作。无论如何,我认为混合使用twirl模板和.js文件不是一个好主意。当应用程序增长时,这可能有点难以维持。