我想知道如何使用多个文件制作requirejs模块。 e.x.我需要一个文件然后以某种方式获取多个文件。 我知道我可以这样做:
define([all the other files], function () {
var mod = {},
files = [all the other files];
arguments.forEach(function (i) {
mod.[files[i]] = i;
});
return mod;
});
但我想知道是否有更好的方法?
答案 0 :(得分:0)
您需要动态文件列表(.txt,.tpl,.htm,.json),以避免更改JS源代码以添加更多文件。
我不知道是否有办法做到这一点,但您必须注意下载所有这些文件所需的时间。我建议你创建一个包含你要下载的所有文件的json文件,然后使用ajax遍历这个文件数组来获取它们。
如果您尝试将所有模块放在目录中,则需要创建一个js文件:<package-all>.js
,例如封装require([all files],function());
。
我相信这是解决这个问题的唯一方法。
答案 1 :(得分:0)
首先,编写像这样的模块,
define(function(){
return {
'mod-a' : require('modules/mod-a'),
'mod-b' : require('modules/mod-b'),
'mod-c' : require('modules/mod-c')
}
})
然后使用r.js优化上面的js来吹一个(r.js将所有模块文件合并为一个),或者,你可以直接这样写:
define('modules/mod-a', [], function(){});
define('modules/mod-b', [], function(){});
define('modules/mod-c', [], function(){});
define('mod-all', ['modules/mod-a','modules/mod-b','modules/mod-c'], function(){
return {
'mod-a' : require('modules/mod-a'),
'mod-b' : require('modules/mod-b'),
'mod-c' : require('modules/mod-c')
}
})
现在,模块'mod-all'就是你想要的东西。