gpt4 book ai didi

javascript - requirejs 导出全局变量

转载 作者:行者123 更新时间:2023-11-30 08:44:15 25 4
gpt4 key购买 nike

我正在尝试将 bootbox ( http://bootboxjs.com ) 与 requirejs 一起使用。

main.html

<script>
var require = {
baseUrl: 'js',
paths: {
"jquery" :['jquery-1.11.0.min'],
"bootbox" :['bootbox.min'],
"bootstrap" :['//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min']
},
shim:
'bootstrap' :{deps:['jquery']},
'bootbox' :{deps:['bootstrap'],exports: 'bootbox'}
}
}
</script>
<script src="require.min.js"></script>
<script src="myscript1.js"></script>

主要.js

define(['bootbox'],function(bootbox){
bootbox.alert("Hello world!"); // working properly
});

myscript1.js

require(['main'],function(){
bootbox.alert("Hello world!"); // not functioning (bootbox is not defined)
});

通常一旦加载了 bootbox 插件,我们就可以在页面的任何地方使用 bootbox:bootbox.alert("Hello world!"); 当使用 requirejs 时,我必须传递 bootbox 变量并在每次使用 requirejs 时定义它以便使用 bootbox。我试过“导出”,但似乎没有帮助。

我们怎样才能让 bootbox 变量在加载后全局可用?

谢谢。

最佳答案

这是交易。 Bootbox 检测它是否在适当的 AMD 加载程序中运行(如 RequireJS)。如果是这样,它不会将任何内容导出到全局空间,而是将自己定义为 AMD 模块,由 AMD 加载程序加载。

Tidoo 关于使用 script 标签加载 Bootbox 的建议是可行的,如果您仔细执行的话。一方面,您必须在加载 RequireJS 之前加载 Bootbox。否则,它会检测到 RequireJS 已加载,确定它正在使用 AMD 加载程序运行,并将自己定义为 AMD 模块。这会导致 RequireJS 出现不匹配的匿名模块错误。另一件事是您必须在 外部 RequireJS 加载 jQuery 并在 Bootbox 之前加载它。所以这是另一个 script 标签。

我建议通过简单地修改您的代码以添加所需的依赖项来避免该解决方案:

require(['bootbox', 'main'],function(bootbox){
bootbox.alert("Hello world!");
});

此外,您不能为 Bootbox 使用 shim 配置,因为它会检测周围是否有 AMD 加载程序并自行调用 define如果它检测到一个。只有不调用 define 的代码才需要 shim 配置。

关于javascript - requirejs 导出全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335341/

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