6

documentationで提案されているように、 r.jsオプティマイザーを使用して、ビルドプロファイルに基づいてjsファイルを結合します。ここに私のbuild-config.js があります:

({
    baseUrl: ".",
    paths: {
        jquery: '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
    },
    name: "main",
    out: "main-built.2013-07-30.js"
})

ご覧のとおり、これはmain.jsファイルに基づいています。コードは次のとおりです。

requirejs.config({
    baseUrl: 'scripts',
    urlArgs: "bust=" + (new Date()).getTime(),
    paths: {
        jquery: [
            '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
            'lib/jquery-1.9.1.min',
        ],
    },
});

require([
    'layout',
    'cue',
], function() {

});

すべての外部ファイル (ここでは CDN から読み込まれた jquery) をmain.jsに保存urlArgs: "bust=" + (new Date()).getTime()すると、次のようになります。.../jquery.js?bust=1377412213

したがって、ビルドを作成するたびにこの行をコメントアウトするのは PITA です。私はすべてのドキュメントを読み、解決策を探しましたが、すべてが無駄でした。多分私はそれを間違っていますか?

4

3 に答える 3

2

これについてのパーティーにはかなり遅れていますが、ここで私が使用した解決策は、次の呼び出しで urlArgs パラメータを構成に追加することです。

HTML:

<script src="js/libs/require.js"></script>
<script src="js/config.js"></script>
<script>require(['main-app']);</script>

構成ファイル:

requirejs.config({
  paths: {...},
  shim: {...}
}); 

// Apply the cache bust only for the browser. 
if (window) {
  requirejs.config({
    urlArgs: REQUIRE_NOCACHE ? "bust="+(new Date()).getTime() : null
  });
}

オプティマイザーは最初のrequirejs.config宣言のみを受け取り、後続のコードを無視します。2 番目のrequirejs.config宣言は、最初の宣言をオーバーライドするのではなく拡張するためurlArgs、ブラウザ内のモジュールに正常に適用されます。それが役立つことを願っています。

于 2015-04-10T18:40:21.890 に答える