requirejs:缩短依赖列表

时间:2012-04-16 15:40:58

标签: javascript requirejs

我使用require.js开发了一个Web应用程序 随着整个事物的增长和增长,某些amd模块的一些依赖列表也会增长 并且变得非常复杂(在我开始使用require.js之前,在index.html页面中提醒我一些大量的脚本标签)。
所以我开始把核心模块 - 我一直需要的 - 放在新的amd模块中:

define(["config", "eventObj", "registry", "log", "userObj"], 
  function (conf, event, reg, log, user) {
    var core = {
      conf: conf,
      event: event,
      reg: reg,
      log: log,
      user: user
    };
    return core;
});

但是,由于这种变化,奇怪的事情发生了,例如,有一次这个“核心”存在,但后来,在另一个模块中,它也被称为依赖,它是未定义的。
有没有更好的方法来缩短依赖列表,将各种模块分组而不必将这些东西放在一个文件中?

2 个答案:

答案 0 :(得分:1)

我们在BoilerplateJS中使用了类似的方法,如果你担心可读性,这看起来会更清晰:

define(function (require) {

    return {
        conf : require("config"),
        event : require("eventObj"),
        reg : require("registry"),
        log: require("log"),
        user : require ("userObj")
    };
});

https://github.com/ectechno/boilerplatejs/blob/master/src/core/_boiler_.js

采用的代码

但我不明白为什么你的设置不能正常工作。你确定你指的是正确的路径吗?

答案 1 :(得分:0)

为这样的依赖关系声明路径时

define(["config", "eventObj", "registry", "log", "userObj"]

它在调用此模块的目录中搜索依赖项。因此,为了避免这种情况,有一种在Require.js

中定义路径的简洁方法
require.config({
    baseUrl: "/another/path",
    paths: {
        "some": "some/v1.0"
    }
  });

现在你可以在任何地方使用“some”作为依赖。这对于为用户模块添加依赖项是可以的。但是,当定义一个核心模块时,Janith上面提到的更干净。我认为它已经缩短了依赖列表。