2015-09-04 65 views
0

我是grunt和文件優化的新手。我將一些JavaScript文件(使用grunt concat)合併成一個文件release.js,然後將其縮小到release.min.js中。如何使用requirejs加載minified concatinated js文件

現在我使用requirejs腳本加載組合文件(它們是jQuery ui小部件)。

我的問題是,這是正確的方法嗎?看到有點奇怪引用release.min.js四次。這是否導致requirejs四次加載release.min.js?還是隻有一次?加載一個大的縮小文件幾次會是愚蠢的。

requirejs.config({ 
baseUrl: '/site/scripts', 
shim: { 
    layout: { 
     deps: ['jquery', 'jquery-ui'] 
    } , 
    serviceTraining: { 
     deps: ['jquery', 'jquery-ui'] 
    }, 
    serviceMail: { 
     deps: ['jquery', 'jquery-ui'] 
    }, 
    forms: { 
     deps: ['jquery', 'jquery-ui'] 
    } 
}, 

paths: {  
    layout: 'custom/release/release.min', 
    forms: 'custom/release/release.min', 
    serviceTraining: 'custom/release/release.min', 
    serviceMail: 'custom/release/release.min' 
    } 
}); 

require(['layout', 'serviceMail', 'serviceTraining', 'forms'], function() { 

$(function() { 

    // theme 
    var layoutPlugin = $("body").layout({ siteName: "Website name", domainName: "website.com" }); 
    layoutPlugin.layout("init"); 

    // Forms 
    var formsPlugin = $("body").forms(); 
    formsPlugin.forms("init"); 

    // Load mail services 
    var serviceMail = $.services.serviceMail(); 
    serviceMail.subscribe($(".form--subscribe")); 
    // Subscribe to the MailChimp e-mail list 
    serviceMail.contact($(".form--contact")); 

    // Register for training 
    var serviceTraining = $.services.serviceTraining(); 
    serviceTraining.register($(".form--training-register")); 

}); 

});

一如既往,歡迎您提出所有建議。謝謝!

回答

1

有兩個指向同一文件的paths一般的獲取加載錯誤的好方法。 (我說「一般」,因爲可能有特定的情況下,將工作,但它只是運氣,你不應該這樣做。)

你應該做的是使用而不是pathsbundles配置選項:

bundles: {  
'custom/release/release.min': ['layout', 'forms', 
           'serviceTraining', 'serviceMail'] 
} 

這告訴RequireJS,當你想要加載任何陣列中的四個模塊,它應該加載模塊custom/release/release.min找到他們。

+0

謝謝。它現在有效。顯然我需要在require語句中使用bundle名稱:require(['custom/release/release.min'],function(){etc .. – Floris