正如所宣传的那样,rjs
在 Play 中可以
确保从 WebJar 中引用的任何 JavaScript 资源都会自动从 jsdelivr CDN 中引用。此外,如果找到任何 .min.js 文件,则将使用该文件代替 .js。这里的一个额外好处是您的 html 不需要更改!
但是,我似乎无法让这些工作。
- 我尝试在生产模式下运行我的 Play 应用程序,我的所有 webjar javascripts 仍然被引用为本地。
- 我没有看到
.min
生产中使用的 javascript 文件的版本。 我无法让依赖注入在生产模式下工作。例如,当我想像这样注入
jquery
我的代码时define(['jquery'], function ($) { 'use strict'; console.log($.grep); return { sum: function (a, b) { return a + b; } }; });
我可以让它在开发模式下正常工作,但在生产模式下,rjs
失败的说法
[info] Error: ENOENT, no such file or directory '/Users/khanguyen/Desktop/rjsdemo/target/web/rjs/build/js/jquery.js'
[info] In module tree:
[info] main
[info] app
[info]
[info] Error: Error: ENOENT, no such file or directory '/Users/khanguyen/Desktop/rjsdemo/target/web/rjs/build/js/jquery.js'
[info] In module tree:
[info] main
[info] app
[info]
[info] at Error (native)
显然,尽管 Webjar 生成了配置设置,但它正在寻找 jQuery 的错误位置
requirejs.config({"paths":{"jquery":["/webjars/jquery/1.11.1/jquery","jquery"]},"shim":{"jquery":{"exports":"$"}},"packages":[]}) }
有正确的位置jquery
。
我正在使用 Play 2.4.0,并pipelineStages := Seq(rjs, digest)
在我的 build.sbt 中进行了设置。
请让我知道我在哪里弄错了。
谢谢!