我有以下情况:

我有一个名为fort的全局名称空间,它具有一些我需要的常用功能,它看起来像这样:

Fort.js

define("fort", ["fortHistory"], function (FortHistory) {

  function Fort(){}
    Fort.prototype.history = FortHistory;

    return Fort;
});


fortHistory是我创建的一个小模块,定义如下:

fortHistory.js

"use strict";
define("fortHistory", function () {

function FortHistory() {

}
FortHistory.prototype.doSomething = function(){...}
return FortHistory;
});


然后我在config.js中执行此操作

require.config( {
    enforceDefine: true,
    paths: {
        'fort': 'develop/js/fort',
        'fortHistory' : 'develop/js/webapp/fortHistory'
 },
    shim: {
        fort:{
            exports: 'fort'
        }
    }
} );
define( function() {} );


终于在main.js中,我有:

define('fort', [], function(fort){
    window.fort = fort;
});


希望我以后可以打电话给:

fort.fortHistory.doSomething();


相反,堡垒是未定义的,所以我假设我误解了requirejs的工作方式

最佳答案

您已将其命名为history,而不是fortHistory

Fort.prototype.history = FortHistory;


尝试通过fort.history.doSomething();调用它。

09-25 15:07