5

我想知道如何制作一个包含多个文件的 requirejs 模块。例如,我需要一个文件,然后以某种方式获取多个文件。我知道我可以这样做:

define([all the other files], function () {
  var mod = {},
      files = [all the other files];   
  arguments.forEach(function (i) {
    mod.[files[i]] = i;
  });
  return mod;

});

但我想知道是否有更好的方法?

4

2 回答 2

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”就是你想要的东西。

于 2014-08-21T17:00:22.593 回答
0

您需要一个动态文件列表(.txt、.tpl、.htm、.json),以避免更改 JS 源代码以添加更多文件。

我不知道是否有办法做到这一点,但您必须注意下载所有这些文件所需的时间。我建议您使用要下载的所有文件创建一个 json 文件,并使用 ajax 遍历该文件数组以获取它们。

如果您尝试将所有模块放在一个目录中,则需要创建一个 js 文件:<package-all>.js它封装了一个require([all files],function());例如。

我相信这是解决这个问题的唯一方法。

于 2013-09-02T17:39:28.903 回答