0

すべてのモジュールで参照できるグローバルオブジェクトを定義しようとしています。ただし、モジュールでは、パスを参照できず、「g」が存在しないと表示されます。

main1.jsで、私はこれを持っています:

requirejs.config({
  paths: {
    Underscore: 'lib/underscore/1.3.3/underscore.min',
    Backbone: 'lib/backbone/0.9.2/backbone.min',
    Globals: 'lib/backbone/ globalVars'
  }
});

require([ 'views/pages', 'views/filters'], function(allPages, filters) {
  filters.render();
  allPages.render();
});

globalVars.jsの中に、私はこれを持っています:

(function() {
    var Globals = {
        isDemo: false
    }
    console.log('in globalvars') // this shows in my console
}).call(this);

そして最後に、view / pages.jsの中に、私はこれを持っています:

define([
  'Globals',
  'Underscore',
  'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo)  //<-- returns "TypeError: g is undefined"

main1.js内で次のように定義を使用する場合:

define( 'Globals', function() {
    return {
        isDemo: true
    }
})

それはうまく機能します。なぜこれが機能しないのかを理解しようとしても、あまり運がありませんでした。isDemoをfalseに変更すると、他の多くのモジュールページ(main2.js、main3)を更新する必要があるため、それを必要とするすべてのモジュールに定義ブロックを貼り付けるボイラープレートではなく、globalVarsへのパスを含めることができるようにしたいと思います。 jsなど)も同様です。ありがとう!

4

1 に答える 1

1

そもそも、あなたglobalVars.jsはモジュールパターンに属していないので、requirejsはあなたがモジュールとして登録しようとしているものを知りません。main1.jsに追加した定義のように、パターンを使用するようにそのファイルを変更すると、すべて設定されているはずです。モジュールとして定義していない理由はありますか?

于 2012-12-04T16:48:47.700 に答える