2012-11-13 33 views
5

根據當前項目環境(例如開發或生產)是否有任何功能加載不同的文件?我的意思是,這可以幫助我透明地加載縮小或完整的文件。我閱讀了關於多版本的加載,但多版本化意味着我需要指定文件的版本。
例如我有我的模塊module.js文件。在這個文件中我需要加載jQuery的:RequireJS:根據環境加載不同的文件

require(['jquery]); 

但我精縮和jQuery的完整版本,而我想要加載不同的文件。我想在配置中這樣的事情:

require.config({ 
     paths: { 
      'jquery' : function(){ 
       if(MODE == 'DEV'){ 
        return 'jquery'; 
       }else{ 
        return 'jquery.min' 
       } 
      } 
     } 
    }); 

或者,也許,類似的東西。

回答

1

如果有人還是想知道如何做到這一點:

require.config({ 
    paths: { 
     'jquery' : (function(){ 
      if(MODE == 'DEV'){ 
       return 'jquery'; 
      }else{ 
       return 'jquery.min' 
      } 
     })() 
    } 
}); 

此功能是自調用匿名函數。它在定義位置立即調用。

2

如果你使用the r.js optimizer那麼這個過程可以爲你照顧。在您的scripts文件夾中保留所有模塊,庫和其他代碼未壓縮的開發目的。我經常有這樣的事情

scripts/ 
    lib/ 
    modules/ 

當準備部署,創建一個build.js和配置各種選項。我給一個類似配置的一個例子,我已經使用:

({ 
    baseUrl: '../scripts', 
    dir: '../scripts.min', 

    paths: { 
     'jquery': 'lib/jquery' 
    }, 

    removeCombined: true, 

    optimize: 'uglify', 
    preserveLicenseComments: false, 
    uglify: { 
     max_line_length: 3500, 
     no_copyright: true 
    }, 

    modules: [ 
     { 
      name: 'module1' 
     }, 
     { 
      name: 'module2', 
      exclude: ['jquery'] 
     } 
    ] 
}) 

更多細節上的每一個選擇這可是can be found in this example configuration我將提請人們注意dirremoveCombined

dir明顯了您的腳本將結束向上。我傾向於使用後綴.min或類似的東西來創建與我的腳本相鄰的文件夾。然後,當你準備去生產,只需更改您的需要配置baseUrlscripts.min

require.config({ 
    baseUrl: '/scripts.min' // Now the site will load scripts from the optimised folder 

    // Other options 
}) 

默認情況下,r.js將所有腳本拷貝過來,無論他們是否已經被合併到另一個JS文件與否。將removeCombined設置爲true將確保您的scripts.min文件夾僅具有生產所需的文件。

相關問題