Javascript RequireJS-集中管理模块

Javascript RequireJS-集中管理模块,javascript,dependencies,requirejs,Javascript,Dependencies,Requirejs,也许我在文档中的某个地方漏掉了这一点,但还是这样。我有一个核心控制器,负责管理模块。到目前为止,我有大约20个模块,希望能够轻松地将它们配置为由核心加载。这意味着我需要一个大数组或大量调用。在一个文本对象中创建一个模块列表,然后让一个模块从中加载它的依赖项,这是可以接受的/好的做法吗?这里有一个例子来说明我的意思: Config.js modules = [ 'moduleA', 'moduleB', 'moduleC' ]; Core.JS define( [

也许我在文档中的某个地方漏掉了这一点,但还是这样。我有一个核心控制器,负责管理模块。到目前为止,我有大约20个模块,希望能够轻松地将它们配置为由核心加载。这意味着我需要一个大数组或大量调用。在一个文本对象中创建一个模块列表,然后让一个模块从中加载它的依赖项,这是可以接受的/好的做法吗?这里有一个例子来说明我的意思:

Config.js

modules = [
    'moduleA',
    'moduleB',
    'moduleC'
];
Core.JS

define(
    ['config'],
    function(config) {
        // Somewhere in here I parse the list and require() each one ?   
        return {
            startAll : function() {
                console.log('starting all modules.');

                // Then call a method common to all 'modules' in the list above.
            }
        }
    };
  }
);

我不确定这是否是一个好主意,因为我是RequireJS新手,但我喜欢能够配置从一个地方加载哪些模块的想法。在我的模块示例中,我指的是我编写的更具体的UI小部件。

我通过使用“包”模式解决了同样的问题。基本上,包充当我的小部件的外观。为了让你更好地了解我在说什么,考虑一下:

widgets.js:

define(['./widgets/button', ...], function(button) {
    return {
        button: button, // expose the widgets here
        ...
    }
});
在这种情况下,按钮模块只返回一个函数。您可能需要调整外观以适合您的情况

该方案使得只需导入facade就可以引用小部件。对我来说,这是非常有益的。我在其他一些地方也使用同样的想法来包装模块,使它们更易于使用


但是,这样做会失去一些RequireJS的好处。这将在任何情况下加载所有小部件,即使您目前不需要这些小部件。当然,在这种情况下,您可以只更新外观,但这是额外的工作…

我明白您的意思。基本上构建一个已加载依赖项的列表并将其加载到另一个模块中?很酷,是的。我不知道这对你的案子是否有效。不过我觉得它很有用。