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

Pri*_*ERO 7 javascript jquery requirejs

我下载的样本项目最新释放RequireJS.他们的文档暗示任何加载的内容都传递到相关函数的参数列表中(按相应的顺序).

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

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

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

我的代码看起来像:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script src="Scripts/require.js" type="text/javascript"></script>

    <script type="text/javascript">

        require(["scripts/jQuery/Core/jquery-1.7.2.min"], function ($) {

            // jQuery is not passed-into the function, so the alias fails!
            $(function () {
                var stop = "";
            });
        });

    </script>

</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

他们的样本看起来像:

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

Mil*_*ros 16

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($);
});
Run Code Online (Sandbox Code Playgroud)

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