RequireJS - 使用模块返回undefined

时间:2014-02-11 12:39:01

标签: javascript requirejs

我正在尝试在我的应用中使用RequireJS。我在cdnjs中包含了requirejs脚本,如下所示:

<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>

在我的页面上我有一个按钮,我为它注册了一个事件:

$('#btnSpeedTest').on('click', function (e) {
    require([baseUrl + 'Content/js/tools/speedtest.js'], function (speedTestModule) {
        alert(speedTestModule);
    });
});

如果我和Fidler一起观看 - 我看到点击按钮speedtest.js后会加载。

speedtest.js包含以下内容:

define('speedTestModule', function () {
    function SpeedTest(settings, startNow) {
         // basic initialization
    }

    var fn = SpeedTest.prototype;

    fn.startRequest = function (download, twoRequests) {
         // logic
    }

    return SpeedTest;
});

alert(speedTestModule);命令返回“undefined”。我看到了一个关于RequireJS的教程,在那个教程中,所有内容都在同一个目录中,以及包含模块名称的文件(由于我是从CDN加载而不是我的情况)。

我甚至试图返回一个简单的字符串,但它没有用。我错过了什么?

由于

1 个答案:

答案 0 :(得分:1)

请勿使用已命名的define。而不是:

define('speedTestModule', function () {

这样做:

define(function () {

让RequireJS命名你的模块。您通常希望在优化模块时让r.js为模块添加名称。在某些情况下,有必要在define电话中自行使用名称,但这些情况确实很特殊。