使用jQuery作为依赖,而无需使用RequireJS加载jQuery?

时间:2013-02-13 12:52:52

标签: jquery dependencies requirejs

请考虑以下页面:

<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 exposes itself是一个全局的AMD模块,所以我应该能够将它添加为依赖项,但我不太清楚如何。

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

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

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

3 个答案:

答案 0 :(得分: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>
如果jQuery看不到define.amd,那么jQuery不会将自己注册为AMD模块。使其正确注册的唯一方法是在jQuery之前加载RequireJS。

答案 1 :(得分:0)

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

requirejs.config({
  shim: {
    'jquery': {
        exports: '$'
    }
  },
  path : {
    jquery : '$PATH/jquery.js'
  }
});

答案 2 :(得分: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