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

しかし、この変更以降、奇妙なことが起こります。たとえば、ある時点ではこの「コア」が存在しますが、後で、依存関係としても参照される別のモジュールでは、未定義になります。
依存関係リストを短縮して、さまざまなモジュールを1つのファイルにまとめることなくグループ化するための、より良い方法はありますか?

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 に答える