2013-01-14 8 views
5

TypescriptとRequireJsで動作する完全なアプリケーションがありますが、完全に動作しています。私は今WebEssentialsをダウンロードしており、それは縮小されたスクリプトファイルを生成しています。 WebEssentialsは、元のスクリプトファイルと同じ名前の分離された* .min.jsファイルを生成します。min.jsファイルの読み込みTypeScriptで生成された、必要なもの

元のスクリプトファイルではなく、ミニファイルを読み込むようにRequireJsに指示する方法を教えてください。あなたはモジュールパスをオーバーライドするために、パスの設定を使用することができ、事前

答えて

8

感謝。

requirejs.config({ 
    enforceDefine: true, 
    paths: { 
     jquery: [ 
      'lib/jquery.min', 
      'lib/jquery' 
     ] 
    } 
}); 

分かっていないファイルを使用するより一般的な方法があります。

+4

こののパフォーマンスコストは何ですか?あなたの例はプロダクションを好むが、例のために、私は '['scriptfile'、 'scriptfile.min']'を使うと言う。 ''scriptfile''はdevにありますが' 'scriptfile.min''のみがプロダクションにあります。 RequireJSは、何回か、モジュールの要件ごとに、「scriptfile」をプロダクションで何回探すのですか? プロパティの値が文字列ではなく配列であるため、わずかな余分な作業があると仮定します。 – N13

+0

私の非公式テストでは、これらを順番にテストし、404が404であることを理解するのに十分なほどスマートです(再度見ないことを意味します)。あなたがデベロッパーであるが好きなプロダクションにいる、またはその逆の場合は、間違いなくパフォーマンスが低下します。 – Scribblemacher

0

これには魔法はありません。あなたはいくつかの選択肢がありますが

  1. minファイルを生成するのに、RequireJS optimizerを使用してください。非常に設定可能。
  2. 使用非分の1に、すべてのファイルを連結し、
  3. はどこか他のアプリをコピーするスクリプト/バッチファイルを作成することを縮小化、.jsファイルにすべての.min.jsにファイルの名前を変更し、上書きする--outコンパイラー・オプション'dのもの。またはいくつかの他のミックスが、あなたは要点を得る
  4. スティーブのようにpaths configを使用します。小規模なアプリケーションでは大丈夫ですが、大規模なアプリケーションでは理想的です。

最適なパフォーマンスを得るには、オプティマイザを調べて、シングルスクリプトのアプローチが適切な判断であるか、複数の小さなライブラリがより良いアプローチであるかを判断する必要があります。私は各.min.jsファイルを読み込むことがあなたにとって理想的な解決策であるとは思わない。

+0

おそらく、outパラメータが最適な解決策です。私はすでにテストしていますが、私のメインページに縮小したファイルを縮小して明示的に読み込んだとしても、** Require **は引き続き冗長バージョンをロードします。この場合、すべてのスクリプトで1つのファイルを使用すると、すべてが既にロードされているので、スクリプトの読み込みを停止するよう要求するにはどうすればよいですか? – mvbaffa

+0

ところで、アウトパラメータがうまくいきません。 --outパラメーターにスクリプトが生成されませんでした。 – mvbaffa

+0

AMDの '--out'を使用している場合、あなたのためには動作しません。代わりにrequirejsオプティマイザを使用する必要があります。 – ryan

9

単純にカスタマイズされたバージョンのrequireを作成することができます。このバージョンでは、通常、 '.js'添付ファイルを受け取るすべてのモジュールファイルリクエストに条件付きで '.min.js'を追加します。次のことを考えてみましょう:

//Establish a new 'useMinified' boolean in your initial config. 
    require.config({ useMinified: true }); 

その後、require.jsにライブラリファイルを編集し、以下のように「nameToUrl」関数を変更します。

//Join the path parts together, then figure out if baseUrl is needed. 
url = syms.join('/'); 

    //new statement 
var extension = config.useMinified ? '.min.js' : '.js'; 

    //customized statement 
url += (ext || (/^data\:|\?/.test(url) || skipExt ? '' : extension)); 

url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; 
+3

なぜrequirejsに実装されていないのかはまだ考えられません! – nljuba

関連する問題