Javascript RequireJS:根据环境加载不同的文件
是否有根据当前项目环境(例如开发或生产环境)加载不同文件的功能?我的意思是,它可以帮助我透明地加载缩小的或完整的文件。我读过关于多版本加载的内容,但多版本控制意味着我需要指定文件的版本。Javascript RequireJS:根据环境加载不同的文件,javascript,requirejs,test-environments,Javascript,Requirejs,Test Environments,是否有根据当前项目环境(例如开发或生产环境)加载不同文件的功能?我的意思是,它可以帮助我透明地加载缩小的或完整的文件。我读过关于多版本加载的内容,但多版本控制意味着我需要指定文件的版本。 例如,我的模块中有module.js文件。在此文件中,我需要加载jQuery: require(['jquery]); 但是我有jQuery的缩小版和完整版,我想加载不同的文件。在配置中,我正在考虑类似的问题: require.config({ paths: {
例如,我的模块中有module.js文件。在此文件中,我需要加载jQuery:
require(['jquery]);
但是我有jQuery的缩小版和完整版,我想加载不同的文件。在配置中,我正在考虑类似的问题:
require.config({
paths: {
'jquery' : function(){
if( MODE == 'DEV' ){
return 'jquery';
}else{
return 'jquery.min'
}
}
}
});
或者,可能是类似的东西。如果您使用,则可以为您处理此过程。在scripts
文件夹中,为了开发目的,保留所有模块、lib和其他代码的未压缩状态。我经常吃这样的东西
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
或类似的文件夹。然后,当您准备投入生产时,只需将require configbaseUrl
更改为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'
}
})()
}
});
此函数是自调用匿名函数。它在定义位置立即调用