3

考虑以下页面:

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
</head>
<body>
    <script data-main="app" src="require.js"></script>
</body>
</html>

当没有加载 RequireJS 时,如何使用 jQuery 作为 RequireJS 模块的依赖项?我知道jQuery 将自己暴露为一个全局 AMD 模块,所以我应该能够将它添加为依赖项,但我不太确定如何添加。

我希望能够做到以下几点:

require(['jquery'], function() {
    console.log('success')
});

如果 jQuery 还没有完成加载,它应该等待它完成,然后继续。这可能吗?

4

3 回答 3

2

第二个加载 jQuery,首先加载 RequireJS。加载两者后运行您的主模块。

<html>
<head>
    <script src="require.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
</head>
<body>
    <script>
        require(["app"], function(app){
            app.runMe()
        })
    </script>
</body>
</html>

define.amd如果 jQuery 看不到浮动,它不会将自己注册为 AMD 模块。使其正确注册的唯一方法是在 jQuery 之前加载 RequireJS。

于 2013-02-14T08:10:06.253 回答
0

您应该将 jquery 定义为 shim,如下所示:

requirejs.config({
  shim: {
    'jquery': {
        exports: '$'
    }
  },
  path : {
    jquery : '$PATH/jquery.js'
  }
});
于 2013-02-13T20:00:57.377 回答
0

一种方法是使用 data-main 属性通过 require.js 加载 main.js 文件:

<script data-main="main" src="require.js"></script>

main.js 文件的风格是:

requirejs.config({
    shim: {         // regard the shim structure as a dependency map
        'jquery': [],
        'app': ['jquery']    // app code will not execute before jquery is loaded
    },
    waitSeconds: 20
});

require(
    [
        'jquery',
        'app'
    ],
    function(
        $
    ) {
        //the plugins from the dependency array have been loaded.
        console.log ("jQuery and app loaded through require.js");
    }
);

上面的示例假设您从与 require.js 相同的位置(即您的站点)加载 jquery.js

于 2013-02-15T16:14:10.267 回答