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 config
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'
            }
        })()
    }
});
此函数是自调用匿名函数。它在定义位置立即调用