require.js shim,导出myOwnGlobal名称

时间:2013-07-09 01:50:56

标签: requirejs require

我不确定在shim配置上使用“exports”,按照requireJS API上的示例,我可以使用Backbone(大写字母B)将其导出到全局范围。 这意味着它将是一个窗口对象属性。 但我意识到我被迫使用该名称,我不能通过其他参考名称导出它,即:“MyGlobalBackbone”

require.config({
  paths: {
    backboneAlias:'backbone'
  },
  shim : {
    backboneAlias : {
      deps : [ 'underscore', 'jquery-1.9.1' ],
      exports  : 'MyGlobalBackbone'
    }
  }
});

require(['backboneAlias'],function(backboneAsAliasDependency){
  console.log(backboneAsAliasDependency);//Loaded Ok
  console.log(MyGlobalBackbone); //Uncaught ReferenceError: MyGlobalBackbone is not     defined 
});

此代码仅在我使用“Backbone”而非“MyGlobalBackbone”...

时才有效

3 个答案:

答案 0 :(得分:7)

实际上你反过来说:shimming不会将变量导出到全局范围,它从全局范围导入它。名称(“Backbone”)由Backbone的作者设置,这是您在shim配置元素中向RequireJS解释的部分。

答案 1 :(得分:0)

在API中查看:
http://requirejs.org/docs/api.html#config-shim

看看这句话:

//加载后,使用全局'Backbone'作为
//模块值。

让我们以这种方式看待它,你会理解它:

//加载后,use a global variable 'Backbone' that defined by the backbone vendor作为
//模块值。

答案 2 :(得分:-1)

您应该使用地图来制作别名。

require.config({
  paths: {
    ...
  },
  shim : {
    ...
  },
  map: {
      '*': {
          'MyGlobalBackbone': 'Backbone'
      }
  }
});

这将允许您对所有(*)模块使用 MyGlobalBackbone 而不是 Backbone