gpt4 book ai didi

twitter-bootstrap - RequireJS 的 Shim Twitter Bootstrap

转载 作者:行者123 更新时间:2023-12-03 07:38:58 24 4
gpt4 key购买 nike

RequireJS docs假设要支持旧版本的 IE,需要配置 enforceDefine: true

So if you want to support Internet Explorer, catch load errors, and have modular code either through direct define() calls or shim config, always set enforceDefine to be true. See the next section for an example.

NOTE: If you do set enforceDefine: true, and you use data-main="" to load your main JS module, then that main JS module must call define() instead of require() to load the code it needs. The main JS module can still call require/requirejs to set config values, but for loading modules it should use define().

由于 Twitter Bootstrap 不是 AMD 模块,因此我需要对其进行填充才能正常工作。这就是我的配置方式;

<script type="text/javascript">
var require = {
paths: {
"bootstrap": "../bootstrap",
"jquery": "../jquery-1.8.2"
},
shim: {
"bootstrap": ["jquery"]
},
enforceDefine: true
};
</script>

后来当我的模块想要 bootstrap 作为依赖项时,我仍然会收到错误消息;

Error: No define call for bootstrap

http://requirejs.org/docs/errors.html#nodefine

如果我正确理解了文档,enforceDefine应该忽略填充程序,但事实并非如此。

我在这里做错了什么?

最佳答案

根据文档,如果“脚本是 shim 配置的一部分,该配置指定了可以检查加载的全局字符串属性,并且检查失败。”,则会引发错误。

要解决此问题,您需要在 shim 配置中添加导出值,以便 RequireJS 可以检查脚本是否已成功加载。对于 Bootstrap,这有点棘手,因为 Bootstrap 不会“导出”属性全局变量,只有一堆 jquery 插件,但您可以使用这些插件中的任何一个作为导出值,例如$.fn.popover:

{
paths: {
"bootstrap": "../bootstrap",
"jquery": "../jquery-1.8.2"
},
shim: {
"bootstrap": {
deps: ["jquery"],
exports: "$.fn.popover"
}
},
enforceDefine: true
}

关于twitter-bootstrap - RequireJS 的 Shim Twitter Bootstrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377373/

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