我正在基于RequireJS和.NET后端构建一个中等规模的单页WebApp,该后端处理我的Ajax“页面更改”。
每次首次加载页面时,一个模块控制器(JS)会加载相应的JS模块。
我在SublimeText 2中工作,并建立了一个配置,在保存时将我的JS编译和压缩成一个单一文件。配置保存在require.config调用中。
这对于所有可由RequireJS跟踪的依赖关系都很好用。然而,我想改进构建过程,以便也能压缩(最好是文件夹)那些不直接需要的模块,并将其保存在另一个文件夹中。
以下是我的RequireJS配置:
模块加载器长这样:
我在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配置文件更改为自动缩小文件夹中的每个文件并将它们保存在相应的文件夹中?