javascript - RequireJS - 集中管理模块

标签 javascript dependencies requirejs

也许我在某处的文档中遗漏了这一点,但这里是。我有一个负责管理模块的核心 Controller 。到目前为止,我有大约 20 个模块,并且希望能够轻松地将它们配置为由核心加载。这意味着我有一个大数组或很多调用需要。在文字对象中创建模块列表然后让模块加载它的依赖项是否可以接受/良好做法?这是我的意思的一个例子:

配置.js

modules = [
    'moduleA',
    'moduleB',
    'moduleC'
];

核心.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
        ...
    }
});

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

这个方案使得通过导入门面来引用小部件成为可能。就我而言,这是非常有益的。我在其他一些地方也使用相同的想法来包装模块并使它们更易于使用。

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

关于javascript - RequireJS - 集中管理模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890391/

相关文章:

Android依赖冲突错误

javascript - Cypress :找不到模块:错误:无法解析'cypress/types/lodash

javascript - jquery函数不支持

java - 如何在 IntelliJ IDEA 中使用 "custom jar"?

python - python 装饰器是否可以根据较早的装饰器结果执行或跳过?

javascript - Jasmine + JSTestDriver + 覆盖率 + RequireJS

javascript - 使用 Bootstrap 作为建议框进行下拉

javascript - JSON 在 FireFox 和 Safari (Windows Vista) 上返回空响应

jquery - RequireJS - 具有多个 jQuery 版本的 jQuery 插件

javascript - 在 CakePHP 中使用 RequireJS 加载数据表 : Issue with DebugKit