压缩后加载的RequireJS模块

3
我正在基于RequireJS和.NET后端构建一个中等规模的单页WebApp,该后端处理我的Ajax“页面更改”。 每次首次加载页面时,一个模块控制器(JS)会加载相应的JS模块。
我在SublimeText 2中工作,并建立了一个配置,在保存时将我的JS编译和压缩成一个单一文件。配置保存在require.config调用中。
这对于所有可由RequireJS跟踪的依赖关系都很好用。然而,我想改进构建过程,以便也能压缩(最好是文件夹)那些不直接需要的模块,并将其保存在另一个文件夹中。
以下是我的RequireJS配置:
require.config({
    appDir: ''
,   paths: {
        'jquery': [
            '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min'
        ,   'lib/jquery'
        ]
    ,   'underscore': [
            '//raw.github.com/documentcloud/underscore/master/underscore-min'
        ,   'lib/underscore'
        ]
    ,   'modernizr': 'lib/modernizr'
    ,   'jquery-ui': 'lib/jquery-ui'
    }
,   shim: {
        'jquery-ui': { deps: ['jquery'] }
    ,   'lib/jquery-tablesorter': { deps: ['jquery'], exports: 'jQuery.fn.tablesorter' }
    ,   'underscore': { exports: '_' }
    }
,   exclude: ['jquery', 'jquery-ui', 'underscore']
,   name: 'main'
,   out: '../min/main.js'
,   optimize: 'none'
});

require(['jquery', 'modules/ModuleController', 'jquery-ui', 'util/Log'], 
    function($, Controller) {
        // jQuery was extended by jqueryUI
        // window.log is now accessible

        $(function(){
            Controller.setup({
                objGlobal: window.RecruitingApp
            });
        })
});

我的文件夹结构如下:

/AppRoot
    /dev
        /lib
        /modules
        /util
        build.js
        main.js
    /min
        /lib
        /* here i'd like to have a generated modules folder with the minified modules */
        main.js

模块加载器长这样:
define(['jquery', 'underscore'], function($, _) {
    var i = {
    };

    var o = {
        objGlobal: null
    };

    var objModules = {};

    var setup = function(options) {
        o = $.extend(o, options);

        o.objGlobal.moduleListener = function(module) {
            require(['modules/'+module+''], function(Module){
                if(objModules.module && _.isFunction(objModules.module.destroy)) {
                    objModules.module.destroy();
                }

                o.objGlobal.currentModule = module;
                objModules.module = Module;
                Module.setup();
            });
        };

        o.objGlobal.moduleListener(o.objGlobal.currentModule);
    }

    // method interface
    i.setup = setup;

    return i;
});

能否将RequireJS配置文件更改为自动缩小文件夹中的每个文件并将它们保存在相应的文件夹中?

1个回答

0
据我所知,您已经在使用 require.js 优化工具 "r.js"。
r.js 有两种优化代码的方式,第一种是将单个模块及其依赖项优化为单个 js 文件,第二种方法是优化整个项目/多个模块。
您可以通过在 r.js 构建配置中使用 "modules" 选项来实现。请在这里查看。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接