2

次のようなrequire.jsベースのプロジェクトのファイル配置があります。

  • lib フォルダー: いくつかのライブラリー
  • app.js : これは、html の data-main として追加されます
  • main.js : これはメインのアプリケーション ファイルです

app.js には、requirejs.config と、すべてのライブラリをロードするための require 呼び出しと、main.js (独自のスクリプトである他のモジュールが必要になります) があります。これは次のようになります。

require(['lib/jquery/jquery-1.8.2.min'],

    function() {

        require(['main']);
    }
);

そのため、AMD と互換性のないライブラリ (ここでは jquery のみ) がいくつかあります。これらは最初にグローバル空間にロードされ、次に main.js が呼び出されます (すべての依存関係と共に)。これは正常に動作しますが、require.js のオプティマイザーを使用してビルドを作成しようとすると、次の問題が発生します。入力として) main.js とそのすべての依存関係は醜くされず、この結果ファイルに組み込まれますが、それらは同じままです。

ここで、ライブラリのリストの最後に「main」を追加すると、出力ファイルに含まれるすべての依存関係がうまく醜くなります。main.js が最後の場所にあるため、依存関係は満たされていると思いますが、問題は、ライブラリを同時にロードするため、(私が書いた) 通常の、醜くされておらず、最適化されていないバージョンのコードを実行すると、 main が最初にロードされるため、依存関係は満たされていません。

開発用とビルド用のアプリのバージョンが必要になるようですか? しかし、もっと良い方法があると確信しています。もっと理にかなっていれば、ファイルを他の構造に再配置することは自由ですが、これはrequire jsの公式サンプルコードでも見た方法でした..

4

1 に答える 1

0

main.jsはあなたのdata-mainスクリプトであるように聞こえjqueryますmain.js. たとえば、次のmain.jsようになります。

require.config({
  shim: {
    'jquery': {
      exports: '$'
    }
  },
  paths: {
    'jquery': 'lib/jquery/jquery-1.8.2.min'
  }
});
define([
  'jquery'
  //more libraries here
], function($) {
  //main code here
});
于 2013-03-28T20:12:54.930 に答える