1

我用 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;
});

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

4

2 回答 2

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采用的代码

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

于 2012-08-24T04:36:51.663 回答
0

当您像这样声明依赖项的路径时

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

它在调用此模块的目录中搜索依赖项。所以为了避免这种情况,Require.js中有一种干净的方式来定义路径

require.config({
    baseUrl: "/another/path",
    paths: {
        "some": "some/v1.0"
    }
  });

现在您可以在任何地方使用“some”作为依赖项。这对于为用户模块添加依赖关系是可以的。但是在定义一个核心模块时,Janith 上面提到的内容更干净。正如我所看到的,它缩短了依赖关系列表。

于 2012-08-24T05:29:52.350 回答