【问题标题】:RequireJS - Managing Modules CentrallyRequireJS - 集中管理模块
【发布时间】:2012-04-11 00:50:02
【问题描述】:

也许我在某个地方的文档中错过了这一点,但这里是这样。我有一个负责管理模块的核心控制器。到目前为止,我有大约 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 小部件。

【问题讨论】:

    标签: javascript dependencies requirejs


    【解决方案1】:

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

    widgets.js:

    define(['./widgets/button', ...], function(button) {
        return {
            button: button, // expose the widgets here
            ...
        }
    });
    

    在这种情况下,按钮模块只返回一个函数。您可能需要调整外观以适合您的情况。

    这种方案可以简单地通过导入外观来引用小部件。就我而言,这是非常有益的。我在其他一些地方也使用相同的想法来包装模块并使它们更易于使用。

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

    【讨论】:

    • 我明白你在说什么。基本上构建一个已加载依赖项的列表并将其加载到另一个模块中?这很酷。
    • 是的。我不知道这是否适用于你的情况。不过,我发现它非常有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多