1

我正在使用Typesafe Activator 1.2.10并尝试使用WebJars Sample for Play 2.x。我查看了应用程序模板并阅读了Bootstrap 依赖于 jQuery。因此,当您将 Bootstrap 指定为依赖项时,您也会获得 jQuery。在测试页面中。

index.scala.html好的,我想我现在可以使用 jQuery - 让我们通过将以下最少代码添加到(inside )来尝试一下<div class="container">

<script type="text/javascript">
  $('.container').hide();
</script>

不,Safari 抱怨说ReferenceError: Can't find variable: $. 如果我在 Safari 的命令行中尝试相同的代码,它就可以工作——所以 jQuery 不会立即加载,但过了一段时间它就在那里。

我阅读了一些有关 RequireJS 用法的内容并尝试以下操作:

<script type="text/javascript">
  require(["jquery"], function() {
    $('.container').hide();
  });
</script>

现在我从 Safari 收到以下错误:

[Error] Failed to load resource: the server responded with a status of 404 (Not Found) (jquery.js, line 0)
[Error] Failed to load resource: the server responded with a status of 404 (Not Found) (jquery.js, line 0)
[Error] Error: Script error for: jquery
http://requirejs.org/docs/errors.html#scripterror

最后我打开index.coffee脚本app/assets并在这里尝试:

require ["bootstrap"], () ->
  console.log "boostrap javascript loaded"
  $('.container').hide()

终于胜利了!但是将我所有的 jQuery 代码写在一个外部文件中真的很讨厌。如何让 jQuery 在 HTML 模板中工作?如何封装代码,使其仅在 jQuery 加载 RequireJS 后执行?谢谢!

4

1 回答 1

4

使用 WebJars 进行依赖管理会将传递依赖项拉入项目中,但这并不意味着它们会神奇地加载到页面中。因此,如果您想使用 jQuery,那么您需要加载它。您可以使用 WebJars 中的 RequireJS 支持来加载传递依赖项(如您所见)。如果您只想将 jQuery 加载到您的index.scala.html页面中,请执行以下操作:

<script type='text/javascript' src='@routes.WebJarAssets.at(WebJarAssets.locate("jquery.min.js"))'></script>

WebJars 文档中的更多详细信息:http ://www.webjars.org/documentation

于 2014-09-03T14:16:41.787 回答