5

是否有一些内置工具或插件可以将我的所有页面脚本保存在一个文件中?我在播放邮件列表中找到了一些主题,但它们都没有回答这个问题。

此外,在某处深处还有谷歌闭包编译器,但看起来除了框架开发人员之外没有人真正知道如何使其工作。

无论如何,如果有一些工具至少能够将我所有的 css 连接到一个文件中,那就太好了。

4

3 回答 3

4

您是否阅读过Closure 的文档?它说:

'app/assets' 中存在的任何 JavaScript 文件都将由 Google Closure 编译器解析,检查错误和依赖关系,如果在构建配置中激活,则将其缩小。

注意:我没有检查它。

于 2012-10-02T11:03:02.760 回答
2

我正在开发一个插件,它可以进行 javascript 连接、缩小和 gzip 压缩,以替代内置的 Assets 控制器,我们在我们的应用程序中使用它。它为 Play 2.2.1 设置,也许它会对你有所帮助。

https://github.com/edeustace/assets-loader

于 2013-05-05T16:32:43.197 回答
1

我认为您应该使用集成在 Play 框架中的 RequireJS。它在以下链接中进行了描述: - Stackoverflow 问题 -播放框架 RequireJS 支持

我找到了 Play 1.x 系列的一个模块,这似乎是我们需要的:

最小化 javascript/css 文件“按下”模块

在我的 Play 2.x 项目中,我们使用视图来连接多个 javascript 文件。它禁用了缩小,但在 javascript 重用和文件组织方面非常有用。对于 css,您也可以使用此方法。

名为 JavascriptRoutes 的控制器获取脚本内容并将其放入模板中:

package controllers

import play.api.Play
import play.api.templates.Html

/**
 * Created by dnoz on 30/06/2014.
 */
object JavascriptRoutes {
  def javascriptRouter(scriptName :String): String = {
    val scriptFile = Play.getFile("app/assets/javascripts/" + scriptName)(Play.current)
    val bufferScriptFile = scala.io.Source.fromFile(scriptFile, "utf-8")
    val reformatedScriptContent = bufferScriptFile.mkString
    reformatedScriptContent
  }
}

这是脚本视图的一部分的示例:

<script type='text/javascript'>
$(function(){
  @Html(JavascriptRoutes.javascriptRouter("backboneClasses/StoredObject/storedObject.model.js"))
  @Html(JavascriptRoutes.javascriptRouter("backboneClasses/Form/form.view.js"))

  //script specific to the view itself:
  var toto = new Object;
  //...
});
</script>

所以脚本完全显示在最终的 HTML 文件中,没有缩小。如果您使用 gzip http 请求发送结果 html,则不必缩小(但总是更好)。

于 2014-05-17T08:47:44.463 回答