我试图将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>
main.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在全球范围内可用,则应使用脚本标签手动将其包括在内。 RequireJS不会公开它。
但是,我强烈建议不要这样做。诸如RequireJS之类的依赖框架的整个思想是,您不必在全局范围内定义任何内容,而是要使您的依赖项明确。这不仅允许您延迟加载脚本,而且还可以稍后替换依赖项,例如用于单元测试。
编辑:
As Louis correctly mentioned Bootbox已经具有AMD支持。如果它检测到RequireJS(或任何其他AMD加载程序),则不会在全局范围内暴露任何内容,但是由于它具有AMD支持,因此您也无需进行填充。
关于javascript - requirejs导出全局变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23335341/