2016-05-31 65 views
0

之前,我使用r.js來優化和縮小我的JavaScript成功。我有這樣看起來是這樣的一個main.js文件:r.js縮小優化文件不運行

require.config({ 
    baseUrl: "scripts/lib", 
    paths: { 
     jquery: "http://code.jquery.com/jquery-1.11.2.min", 
     underscore: "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min", 
     d3: "d3-for-development", 
     katex: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min", // or 0.2.0 
     mathjax: "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML&delayStartupUntil=configured", 
     etc... 
    }, 
    shim: { 
     underscore: { exports: "_" }, 
     chosen: { deps: ["jquery"] }, 
     mathjax: { 
      exports: "MathJax", 
      init: function(){ 
       MathJax.Hub.Config({ 
        tex2jax: { 
         inlineMath: [['$','$'], ['\\(','\\)']], 
         processEscapes: true, 
        }, 
       }); 
       MathJax.Hub.Startup.onload(); 
       return MathJax; 
      } 
     }, 
    }, 
}); 

require([ 
    "jquery", 
    "underscore", 
    "browser-detect", 
    "check-types", 
    "katex", 
    "mathjax", 
    etc 
], function(
    $, 
    _, 
    browser, 
    check, 
    katex, 
    mathjax, 
    etc 
){ 

/////////////////////////// INITIALIZATION /////////////////////////// 
loginInit() 
show('#login') 

etc... 

,我可以成功運行node build/r.js -o mainConfigFile=www/scripts/main.js baseUrl=www/scripts/lib name=../main out=www/scripts/main-optimized.min.js generateSourceMap=true preserveLicenseComments=false optimize=uglify2來縮小。一切正常。

現在,我有一個config.js文件看起來像這樣:

require.config({ 
    urlArgs: "bust=" + new Date().getTime(), 
    baseUrl: "scripts/lib", 
    paths: { 
     jquery: ["jquery-min", "http://code.jquery.com/jquery-1.11.2.min"], 
     underscore: ["underscore-min", "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min"], 
     d3: "d3-for-development", // if we add patches separately, then we can just use https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min 
     katex: ["katex-min", "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min"], // or 0.2.0 
     mathjax: "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML&delayStartupUntil=configured", 
     main: "../main", 
     etc... 
    }, 
    shim: { 
     underscore: { exports: "_" }, 
     chosen: { deps: ["jquery"] }, 
     mathjax: { 
      exports: "MathJax", 
      init: function init() { 
       MathJax.Hub.Config({ 
        tex2jax: { 
         inlineMath: [['$', '$'], ['\\(', '\\)']], 
         processEscapes: true } 
       }); 
       MathJax.Hub.Startup.onload(); 
       return MathJax; 
      } 
     } 
    } 
}); 

require(["main"], function (main) { 
    // pass. by loading main, we run main.js 
}); 

而是經過縮小的/優化的參數直接進入命令行中,我創建了一個rbuild.js文件爲:

({ 
    mainConfigFile: "../www/scripts/config.js", 
    baseUrl: "../www/scripts/lib", 
    name: "../config", 
    out: "../www/scripts/config-optimized.min.js", 
    generateSourceMap: true, 
    preserveLicenseComments: false, // this is necessary for generateSourceMap to work 
    optimize: "uglify2", 
    // removeCombined: true, 
    // findNestedDependencies: true, 
    paths: { 
     // https://github.com/jrburke/requirejs/issues/791 
     // http://www.anthb.com/2014/07/04/optimising-requirejs-with-cdn-fallback 
     jquery: "jquery-min", 
     underscore: "underscore-min", 
     d3: "d3-for-development", 
     katex: "katex-min", 
     mathjax: "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML&delayStartupUntil=configured", 
     marked: "marked", 
     chosen: "chosen-min", 
     jsnetworkx: "jsnetworkx-min", 
     main: "../main", 
    }, 
}) 

我在命令行中用node build/r.js -o build/rbuild.js運行它。如預期的那樣,它似乎成功運行並生成config-optimized.min.js文件。輸出是:

Tracing dependencies for: ../config 
Cannot optimize network URL, skipping: http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML&delayStartupUntil=configured 
Uglify2 file: /Users/Matthew/programming/prove-math/www/scripts/config-optimized.min.js 

/Users/Matthew/programming/prove-math/www/scripts/config-optimized.min.js 
---------------- 
/Users/Matthew/programming/prove-math/www/scripts/lib/jquery-min.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/underscore-min.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/browser-detect.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/check-types.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/katex-min.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/profile.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/marked.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/d3-for-development.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/user.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/graph-animation.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/graph.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/node.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/blinds.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/chosen-min.js 
/Users/Matthew/programming/prove-math/www/scripts/main.js 
/Users/Matthew/programming/prove-math/www/scripts/lib/../config.js 

但是當我通過我的服務器訪問index.html,頁面是空白。 JS控制檯不提供錯誤或日誌消息,這表明沒有JS正在運行。我的服務器沒有提供任何錯誤,這表明所有內容都已成功發送到客戶端,而客戶端JS未運行。

所以我非常相信JS在那裏,但沒有運行。我的設置有什麼問題導致config.js無法運行代碼?由於沒有錯誤信息,我無法排除故障:)

+1

來自未來的提示:cdn.mathjax.org即將到期,請查看https://www.mathjax.org/cdn-shutting向下/用於遷移提示。 –

回答

1

所以我註釋掉

generateSourceMap: true, 
    preserveLicenseComments: false, // this is necessary for generateSourceMap to work 
    optimize: "uglify2", 

和它的工作!那麼,我沒有注意到這些東西,它仍然工作!

看來,作爲requireJS 2.2(我用的是2.1.6 RequireJS之前),你現在可以使用

optimize: "uglify", 

或者什麼都沒有,因爲這是默認設置。至於需要J2S 2.2,在這種情況下它使用uglify2。這是我可以給出的最接近的解釋:/