簡體   English   中英

RequireJS:根據環境加載不同的文件

[英]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']
        }
    ]
})

可以在此示例配置中找到有關每個選項的更多詳細信息,但我將提請注意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文件夾僅具有生產所需的文件。

如果仍然想知道該怎么做:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM