RequireJS如何从jam文件包部分指定shim依赖项

时间:2012-12-31 18:14:13

标签: requirejs amd jamjs

我在一个使用backbone-boilerplate的项目中工作,该项目使用RequireJS加载模块,使用JamJS来管理它们。 我的require config.js文件如下:

require.config({
  deps: ["../vendor/jam/require.config", "main"],
  paths: {
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage"
  },
  shim: {
    "backbone.localStorage": {
        deps: ['backbone']
    }
  }
});

正如您所见,jam配置文件jam/require.config.js中的RequireJS加载配置指定了主干,jquery和下划线。接下来是文件的一部分:

    "packages": [
        {
            "name": "backbone.layoutmanager",
            "location": "../vendor/jam/backbone.layoutmanager",
            "main": "backbone.layoutmanager.js"
        }
        {
            "name": "backbone",
            "location": "../vendor/jam/backbone",
            "main": "backbone.js"
        }
    ],
    "version": "0.2.11",
    "shim": {
        "backbone.layoutmanager": {
            "deps": [
                "jquery",
                "backbone",
                "lodash"
            ],
            "exports": "Backbone.LayoutManager"
        }
        "backbone": {
            "deps": [
                "jquery",
                "lodash"
            ],
            "exports": "Backbone"
        }
    }
};

我想要的是在我的config.js中指定backbone.localStorare库取决于包部分中定义的主干。 此外,如果我按如下方式指定骨干路径,那么它找到了骨干库,但发现错误消息说未加载下划线:

require.config({
  deps: ["../vendor/jam/require.config", "main"],
  paths: {
    "backbone": "../vendor/jam/backbone/backbone",
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage"
  },
  shim: {
    "backbone.localStorage": {
        deps: ['backbone']
    }
  }
});

我可以使用jamjs添加backbone.localStorage库,但是可用包的版本是旧的,所以我更喜欢手动下载最后一个并手动包含。

任何想法或帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

Backbone需要Underscore & jQuery

shim: {
    "backbone": {
       "deps": [ "underscore", "jquery" ],
       "exports": "Backbone"  //attaches "Backbone" to the window object
    },
    "underscore": {
       "exports": "_"
    }
}

所以我认为你最好调整jam/require.config.js

修改

接下来,问题中的packages部分是jam/require.config.js的一部分?位置是否相对于jam/require.config.js的位置?

您是否尝试在自己的config.js中添加packages部分:

"packages": ["backbone", "backbone.layoutmanager"]