为什么RequireJS不将jQuery传递给函数别名?

我下载了最新版 RequireJS示例项目 。 他们的文档表明任何加载的内容都传递到相关函数的参数列表中(按相应的顺序)。

所以我决定尝试一下……但它似乎没有用!

  • Firebug (网络标签)显示jQuery正在加载:所以RequireJS obvioulsy成功完成了那部分
  • Firebug (控制台选项卡)显示’$不是函数’

我的问题是:为什么别名没有填充?

我的代码看起来像:

      require(["scripts/jQuery/Core/jquery-1.7.2.min"], function ($) { // jQuery is not passed-into the function, so the alias fails! $(function () { var stop = ""; }); });    

他们的样本看起来像:

 //Inside scripts/main.js require(["some/module", "a.js", "b.js"], function(someModule) { //... }); 

jQuery应该通过特殊名称“jquery”加载,否则它不会自己注册(因为jQuery使用命名的定义)。

 // create an alias that points to proper file require.config({ paths : { jquery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min" } }); // require jquery usign the path config require(["jquery"], function ($) { console.log($); }); 

这就是为什么命名的define被认为是反模式的主要原因,应该只在需要时使用(当你在同一个文件中有多个模块时)。

请务必阅读RequireJS + jQuery示例项目的“ README.md ”。 使用jQuery有很多复杂因素,您需要在初始设置期间决定如何最好地为项目解决问题。 一旦你弄清楚什么对你最好并实施它,它应该不再是一个问题。

许多复杂因素还来自jQuery不是真正的AMD模块这一事实,如果它检测到定义函数可用,它们只是在代码库中进行定义以进行定义。 例如,这意味着jQuery模块名称将始终为“jquery”(请注意小写的“q”),除非您自己将其包装,因此如果您在配置中为其定义路径,则必须具有名为“jquery”的键(再次,小写’q’)或将出现不匹配。 首先在我们的项目上设置RequireJS(我们将关键字命名为“jQuery”),这就是我们的一点。

您的脚本文件夹是“脚本”还是“脚本”?

您正在请求“Scripts / require.js”以及“scripts / jQuery / Core / jquery-1.7.2.min”。 看看Firebug的Net标签……我打赌你在那里生成了404。