§RequireJS
根据 RequireJS 网站
RequireJS 是一个 JavaScript 文件和模块加载器。它针对浏览器内使用进行了优化,但可以在其他 JavaScript 环境中使用……使用像 RequireJS 这样的模块化脚本加载器将提高代码的速度和质量。
在实践中,这意味着可以使用 RequireJS 对 JavaScript 进行模块化。RequireJS 通过实现一个称为 异步模块定义 的半标准 API 来实现这一点(其他类似的想法包括 CommonJS)。使用 AMD 可以解析和加载客户端上的 javascript 模块,同时允许服务器端优化。对于服务器端优化,模块依赖项可以使用 UglifyJS 2 进行最小化和合并。
按照惯例,RequireJS 期望一个 main.js 文件来引导其模块加载器。
§部署
RequireJS 优化器通常应该在执行部署时才启动,例如通过运行 start
、stage
或 dist
任务。
如果在构建中使用 WebJars,则 RequireJS 优化器插件还会确保从 WebJar 中引用的任何 JavaScript 资源都自动从 jsdelivr CDN 中引用。此外,如果找到任何 .min.js
文件,则将使用该文件代替 .js
。这里的一个额外好处是,您的 html 不需要进行任何更改!
§启用和配置
RequireJS 优化通过简单地将插件添加到 plugins.sbt 文件中来启用,当使用 PlayJava
或 PlayScala
插件时。
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 过滤器
发现此文档中的错误? 此页面的源代码可以在 这里 找到。 阅读完 文档指南 后,请随时贡献拉取请求。 有问题或建议要分享? 前往 我们的社区论坛 与社区开始对话。