文档

§RequireJS

根据 RequireJS 网站

RequireJS 是一个 JavaScript 文件和模块加载器。它针对浏览器内使用进行了优化,但可以在其他 JavaScript 环境中使用……使用像 RequireJS 这样的模块化脚本加载器将提高代码的速度和质量。

在实践中,这意味着可以使用 RequireJS 对 JavaScript 进行模块化。RequireJS 通过实现一个称为 异步模块定义 的半标准 API 来实现这一点(其他类似的想法包括 CommonJS)。使用 AMD 可以解析和加载客户端上的 javascript 模块,同时允许服务器端优化。对于服务器端优化,模块依赖项可以使用 UglifyJS 2 进行最小化和合并。

按照惯例,RequireJS 期望一个 main.js 文件来引导其模块加载器。

§部署

RequireJS 优化器通常应该在执行部署时才启动,例如通过运行 startstagedist 任务。

如果在构建中使用 WebJars,则 RequireJS 优化器插件还会确保从 WebJar 中引用的任何 JavaScript 资源都自动从 jsdelivr CDN 中引用。此外,如果找到任何 .min.js 文件,则将使用该文件代替 .js。这里的一个额外好处是,您的 html 不需要进行任何更改!

§启用和配置

RequireJS 优化通过简单地将插件添加到 plugins.sbt 文件中来启用,当使用 PlayJavaPlayScala 插件时。

addSbtPlugin("com.github.sbt" % "sbt-rjs" % "2.0.0")

要将插件添加到资产管道,可以按如下方式声明它(假设管道中只有一个插件 - 根据需要将其他插件添加到序列中,例如 digest 和 gzip)

pipelineStages := Seq(rjs)

RequireJS 优化器提供了一个标准的构建配置文件,应该足以满足大多数项目的需求。 但是,请参阅 插件文档 以了解如何配置它。

请注意,RequireJS 执行了大量工作,虽然它在 Trireme 的 JVM 中执行时可以正常工作,但从性能角度来看,最好使用 Node.js 作为 js 引擎。 为方便起见,您可以在 SBT_OPTS 中设置 sbt.jse.engineType 属性。 例如在 Unix 上

export SBT_OPTS="$SBT_OPTS -Dsbt.jse.engineType=Node"

请参阅 插件文档 以了解如何配置它。

下一步:内置 HTTP 过滤器


发现此文档中的错误? 此页面的源代码可以在 这里 找到。 阅读完 文档指南 后,请随时贡献拉取请求。 有问题或建议要分享? 前往 我们的社区论坛 与社区开始对话。