![](/img/trans.png)
[英]requirejs - loading the same module with a different name in different files
[英]RequireJS: loading different files according environment
是否具有根據當前項目環境(例如開發或生產)加載不同文件的功能? 我的意思是,這可以幫助我透明地加載縮小或完整的文件。 我讀過有關多版本加載的信息,但是多版本意味着我需要指定文件的版本。
例如,我的模塊中有module.js文件。 在此文件中,我需要加載jQuery:
require(['jquery]);
但是我已經縮小了jQuery的完整版,我想加載不同的文件。 我正在考慮在配置中這樣的事情:
require.config({
paths: {
'jquery' : function(){
if( MODE == 'DEV' ){
return 'jquery';
}else{
return 'jquery.min'
}
}
}
});
或者,也許類似的東西。
如果您使用r.js優化器,則可以為您完成此過程。 在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']
}
]
})
可以在此示例配置中找到有關每個選項的更多詳細信息,但我將提請注意dir
和removeCombined
dir
顯然是腳本結束的地方。 我傾向於在后綴.min
或類似名稱的腳本旁邊創建一個文件夾。 然后,當你准備去生產,只需更改您的需要配置baseUrl
到scripts.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
文件夾僅具有生產所需的文件。
如果仍然想知道該怎么做:
require.config({
paths: {
'jquery' : (function(){
if( MODE == 'DEV' ){
return 'jquery';
}else{
return 'jquery.min'
}
})()
}
});
此功能是自調用匿名功能。 它立即在定義位置調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.