播放2.3 Webjars - 默认requirejs支持 - 如何编写define或require

时间:2014-12-23 18:56:04

标签: requirejs playframework-2.3 webjars

我正在努力让requirejs和webjars工作,但它们似乎没有在游戏中工作2.3.7

路线:

GET      /vassets/*file     controllers.Assets.versioned(path="/public", file)
GET      /webjars/*file     controllers.WebJarAssets.at(file)

build.sbt

  "org.webjars" %% "webjars-play" % "2.3.0-2",
    "org.webjars" % "jquery" % "2.1.3"

html模板

<script>
    @Html(org.webjars.RequireJS.getSetupJavaScript(routes.WebJarAssets.at("").url))
</script>
<script data-main="@routes.Assets.versioned("js/koapp/js_init")"
  src="@routes.WebJarAssets.at(WebJarAssets.locate("require.min.js"))"></script>
</head>

js_init.js(require.js data-main)

function test(){
  return console.log('test');
}
require("jquery",test);

我收到错误&#34;未捕获的TypeError:对象不是函数&#34;

另外,我尝试在主js中使用define。它无法找到依赖关系,它正在寻找与主js在同一文件夹中的lib。

   define([ 'knockout'],
        function(ko) {
  console.log('hello world')       
});

是完全破坏了requirejs + webjars集成还是我做了一些废话?请帮忙

1 个答案:

答案 0 :(得分:1)

WebJars Play2 Activator Template所有这些东西都在其中。所以你应该比较你的东西。

我认为data-main="@routes.Assets.versioned("js/koapp/js_init")"需要包含.js扩展名,例如:data-main="@routes.Assets.versioned("js/koapp/js_init.js")"

此外,/vassets路线应为:

GET        /vassets/*file    controllers.Assets.versioned(path="/public", file: Asset)

请注意Asset参数上的file类型。