如何使用多个文件创建requirejs模块

时间:2013-08-10 15:31:38

标签: javascript requirejs amd

我想知道如何使用多个文件制作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;

});

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

2 个答案:

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