gpt4 book ai didi

javascript - 对 RequireJS 主模块的依赖

转载 作者:行者123 更新时间:2023-11-27 23:38:17 25 4
gpt4 key购买 nike

假设我有一个包 common/lib,我在其中为 jQuery 和 AngularJS 定义了 RequireJS 模块。

现在假设我有以下 config.js:

require.config({
baseUrl: 'http://www.some-website.com/scripts/',
paths: {
'common/lib': 'bundles/common/lib',
},
shim: {
'main': ['common/lib']
}
});

查看配置的依赖项,main 应该等待 common/lib 加载(它定义了 Angular 模块)。

这是我的main.js:

define('main', ['angular'], function (angular)
{
// Use angular here
});

main 模块需要 Angular 模块,但 Angular 模块位于 common/lib 包中,所以我告诉 main 等待 common/lib 以便定义模块。

但是,这似乎不起作用,main不会等待common/lib,因此尝试找到未定义的Angular > 模块运气不佳,引发错误。

所以,我的问题是:

如何配置主模块的依赖项?

<小时/>

我应该注意,我没有在 main.jsscript 标记上使用 data-main 属性。

相反,我在 config.js 之后将其作为普通脚本加载,然后执行此行来加载 main 模块:

require(['main']);

最佳答案

您想要做的事情可以通过使用 bundles 来解决配置选项。您将其添加到您的配置中:

bundles: {
'common/lib': ['angular', ...]
}

这本质上告诉RequireJS,当它想要加载Angular模块时,它应该加载common/lib模块,然后Angular将会定义的。我已将 ... 放入列表中,因为您可能想在其中添加其他模块名称。

请注意,shim 仅适用于不正确的 AMD 模块(即那些不调用 define 的模块)。将 shim 与 AMD 模块一起使用会导致未定义的行为。因此,您在问题中使用 shim 是不正确的。

关于javascript - 对 RequireJS 主模块的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com