2012-04-16 13 views
1

require.jsを使ってWebアプリケーションを開発します。
特定のamdモジュールのいくつかの依存関係リストもまた に成長し、非常に複雑になります(require.jsを使い始める前に、index.htmlページに多量のスクリプトタグを思い出させます) )。
だから私はコアモジュール置くために始めた - 新しいAMDモジュールに - 私はいつも必要なもの:requirejs:依存関係リストの短縮

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つのファイルにまとめることなくグループ化するより良い方法はありますか?

+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

から採用さしかし、あなたのセットアップではない私はなぜ表示されません適切に動作します。あなたは正しいパスを指していると確信していますか?

0

あなたはそれは、このモジュールが呼び出されたディレクトリ内の依存関係を検索この

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

のような依存関係のパスを宣言します。だから、シナリオのこの種のを避けるために、今、あなたは「いくつかの」どこでも依存関係として使用することができますRequire.js

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

でパスを定義するためのクリーンな方法があります。これは、ユーザーモジュールの依存関係を追加しても問題ありません。しかし、コアモジュールを定義するとき、Janithが上記で述べたことはもっときれいです。私が見ているように、それは依存関係リストを短くしています。