1

我不确定在 shim 配置上使用“导出”,按照 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”时才有效......

4

3 回答 3

7

实际上你得到了它的另一种方式:填充不会将变量导出到全局范围,它会从全局范围导入它。名称(“Backbone”)由 Backbone 的作者设置,这是您在shimconfig 元素中向 RequireJS 解释的部分。

于 2013-07-09T07:25:24.133 回答
0

See it in the API:
http://requirejs.org/docs/api.html#config-shim

Look at this sentence:

//Once loaded, use the global 'Backbone' as the
//module value.

Let's see it in that way, you will understand it:

//Once loaded, use a global variable 'Backbone' that defined by the backbone vendor as the
//module value.

于 2013-10-10T08:11:13.187 回答
-1

您应该使用map来创建别名。

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

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

于 2014-01-13T13:29:34.423 回答