【发布时间】:2015-08-17 01:06:48
【问题描述】:
正如宣传的那样,Play 中的rjs 可以
确保从 WebJar 中引用的任何 JavaScript 资源 自动从 jsdelivr CDN 引用。另外如果有的话 找到 .min.js 文件,然后将使用该文件代替 .js。一个添加的 这里的好处是您的 html 不需要更改!
但是,我似乎无法让这些工作。
- 我尝试在生产模式下运行我的 Play 应用程序,但我的所有 webjar javascript 仍被引用为本地。
- 我没有看到生产中使用的
.min版本的 javascript 文件。 -
我无法让依赖注入在生产模式下工作。例如,当我想像这样在我的代码中注入
jquery时define(['jquery'], 函数 ($) { '使用严格'; 控制台.log($.grep); 返回 { 总和:函数(a,b){ 返回 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,在我的 build.sbt 中设置了 pipelineStages := Seq(rjs, digest)。
请告诉我哪里弄错了。
谢谢!
【问题讨论】:
-
我也有同样的问题,不知道是不是配置问题,所以在这里打开了一个问题github.com/webjars/sample-play2/issues/7
-
这是我到目前为止所注意到的,但没有明确解释为什么事情有效或无效。您必须使用经典 Webjar。当你在 main.js 中声明你的
paths时,将 URL 括在 [方括号] 中。我决定放弃 Webjar 模块,因为我不想要同一个文件的 2 个版本。让我知道事情的后续。一旦我弄清楚如何把它放在一起,我会写带有指导的帖子。 -
你放弃了 webjar 模块?所以你不再使用它们了?那将是不幸的。我仍然想知道我们是否只是缺少一些配置或者可能存在不兼容(sbt-rjs 有一段时间没有更新)。
-
澄清一下,我使用 Webjars,但我不使用 webjar-play 模块。
标签: requirejs webjars requirejs-optimizer playframework-2.4