requirejs在头部加载外部脚本

时间:2013-11-21 09:56:35

标签: javascript jquery requirejs

这是我的html主管:

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta charset="utf-8">
    <title>vente-privee.com</title>
        <script src="@Url.Content("~/Scripts/Modules/lib/jquery-1.8.3.js")"></script>
      <script type="text/javascript" src="//url/otherScript.js"></script>
    <script src="@Url.Content("~/Scripts/Modules/config.js")"></script>
    <script data-main="@Url.Content("~/Scripts/Modules/main")" src="@Url.Content("~/Scripts/Modules/requirejs/require.js")"></script>
    </script>
</head>

我需要在标头中声明jquery和otherScript Syncrounously。 在require.js中,我还需要使用lib jquery(在头部声明相同),我不需要重新加载其他版本。

如何配置我的路径?

现在我这样做:

var require = {
    paths: {
        // local
        "jquery": "lib/jquery-1.8.3",
        "jquery.validate": "lib/jquery.validate",
        "jquery.validate.unobtrusive": "lib/jquery.validate.unobtrusive",
  },

    shim: {
        "jquery.validate": {
            deps: ["jquery"],
            exports: "jQuery.validator"
        },
        "jquery.validate.unobtrusive": {
            deps: ["jquery.validate"],
            exports: "jQuery.validator.unobtrusive"

所以我重新加载Jquery 2次,如何引用头部加载的jquery?

1 个答案:

答案 0 :(得分:0)

我建议你重新安排你的脚本:

<script src="@Url.Content("~/Scripts/Modules/requirejs/require.js")"></script>
<script src="@Url.Content("~/Scripts/Modules/lib/jquery-1.8.3.js")"></script>
<script type="text/javascript" src="//url/otherScript.js"></script>
<script src="@Url.Content("~/Scripts/Modules/config.js")"></script>
<script>
    require("@Url.Content("~/Scripts/Modules/main")");
</script>

这不是使用require脚本的data-main属性;相反它require是主要模块(这可能需要微不足道的调整,取决于main.js的内容,但我希望你明白这一点)。这样jQuery会将自己注册到AMD,因为首先加载RequireJS并且 NOT 需要路径:

"jquery": "lib/jquery-1.8.3", // DELETE THIS!

顺便说一句,上面的代码中有一个迷路</script>标记...(</head>之前的最后一行)