0

我正在尝试使用命名空间requireJS并面临一些问题。到目前为止,我有:

require.config({
  paths: {
      jquery: [
          'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min'
        ],
      jqueryUI: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min',
      main: 'http://mysite.com/main'
  }
});

然后我正在尝试加载

require(['jquery', 'main'], function($) {
    myApp.core.init();
});

wheremain.js包含我的命名空间变量,例如myApp- 但是它告诉 jQuerymyApp未定义

(function(myApp, $, undefined) {

}(window.myApp = window.myApp || {}, jQuery));

行不通?有人可以帮忙吗?

4

2 回答 2

1

您可能应该了解如何以 AMD 格式使用模块。为此,您需要将 main.js 重构为模块定义。例如

define(['jquery'], function($) {

    // Setup my module

    return {
        // return an object, or function etc
    }

});

// Nicer way - http://requirejs.org/docs/whyamd.html#sugar
define(function(require){

    var $ = require('jquery');

    return {

    }

});

如果由于某种原因您无法修改 main.js 代码,您也可以使用 RequireJS 中的shim选项。一个例子可能是:

require.config({
    shim: {
        'main': {
            deps: ['jquery'],
            exports: 'myApp'
        }
    }
});
于 2012-09-04T08:18:37.933 回答
0

这是一个模块模板(总是使用这样的东西)

define(function(require){
  var $ = require('jquery');

  var myApp = function(){
  };

  // etc...

  return myApp;
}
于 2013-11-02T18:43:15.700 回答