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();
});

どこmain.jsに私の名前空間変数が含まれていますmyApp- しかし、それはjQueryが定義されていないmyAppことを示しており、内部のすべてのコードが

(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 に答える