gpt4 book ai didi

javascript - 通过 Javascript 修复 Dojo 和 JQuery 依赖库 multipleDefine 冲突

转载 作者:行者123 更新时间:2023-11-29 20:52:25 29 4
gpt4 key购买 nike

这个问题之前已经回答过很多次,我知道一种解决方案是简单地更改它,以便 (Esri)dojo 是最后一个加载的。

问题是我正在开发一个模块化小部件,它无法访问页面的 html 来更改顺序,我必须只能通过 Dojo 的 AMD 加载程序加载库。

文件夹结构:

/Widget
--/Main.js
--/Datatable.js

这是 Main.js 文件:

define([
'./Datatable',
'https://code.jquery.com/jquery-3.3.1.min.js',
'https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.js',
],
function(Datatable){ ... }

和 Datatable.js(我为组织创建的另一个模块):

define([
'https://cdn.datatables.net/v/bs4/dt-1.10.18/r-2.2.2/datatables.min.js'
],function(){ ... }

我这里有两个主要问题;

1) AMD Loader 是异步的,不解析非 AMD 模块的依赖关系,这意味着顺序应该很重要

datatables.min.js 需要 bootstrap.bundle.js 需要 jquery-3.3.1.min.js

所以,如果幸运的话,请求将根据延迟按顺序加载,不是很可靠...

2) Bootstrap 和 Datatable 通用 javascript 文件都会引发“multipleDefine”错误,可能是因为它们试图定义“jquery”,我真的不确定如何解决这个问题(拥有它们的本地编辑副本不会'不理想)

我该如何解决这两个问题?

最佳答案

对于订单,你可能会做类似的事情:

require(['https://code.jquery.com/jquery-3.3.1.min.js'], function() {
require(['https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.js'], function() {
define(['./Datatable'], function(Datatable){ ... }
});
});

这将强制以特定顺序进行解析。
当 2 个组件试图在全局范围(此处为 window)上创建函数 define 时,将引发 multipleDefine 错误。
很难给出一个完美的答案。
如果您可以设置 fiddle 或类似的东西,我可以更深入地了解一下。
我想到的一件事:您可以尝试在加载引发错误的文件之一之前 delete window.define...但这很丑陋,甚至可能无法工作...

关于javascript - 通过 Javascript 修复 Dojo 和 JQuery 依赖库 multipleDefine 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51216600/

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