我的问题是让冗余的RequireJS依赖项指向同一个JS库。
引用的库是 jQuery UI ,它在内部和外部库 Gridstack 引用,这导致了此问题。
内部和外部引用都应指向一个文件jquery-ui.js
。
如何配置RequireJS(即在main.js
内部)来处理这些引用,而不对任何现有模块/库进行任何更改?
JQuery UI v1.11.2 - 我的JQuery UI分发(单个文件)
Gridstack 0.2.5-dev - 将其引用为jquery-ui/core
,jquery-ui/widget
,jquery-ui/mouse
,jquery-ui/draggable
和jquery-ui/resizable
我在内部使用jquery.ui
答案 0 :(得分:5)
路易斯'回答指出我正确的方向,我仍然花了一些时间来找出完整的解决方案,所以我在这里发布我的工作requirejs配置以供将来参考:
hostname
请注意,我似乎无法使用cdnjs中的ssh.connect(hostname, port=22, username=x, password=y)
脚本。这意味着在您的模块中,您必须在define命令中引用import os
hostname=input("enter the ipaddress")
os.system(hostname)
和requirejs.config( {
baseUrl: 'js',
paths: {
jquery: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min',
'jquery.ui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min',
lodash: 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min',
gridstack: 'https://cdnjs.cloudflare.com/ajax/libs/gridstack.js/0.3.0/gridstack.min',
'gridstack.jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/gridstack.js/0.3.0/gridstack.jQueryUI.min',
},
map: {
'*': {
'jquery-ui/data': 'jquery.ui',
'jquery-ui/disable-selection': 'jquery.ui',
'jquery-ui/focusable': 'jquery.ui',
'jquery-ui/form': 'jquery.ui',
'jquery-ui/ie': 'jquery.ui',
'jquery-ui/keycode': 'jquery.ui',
'jquery-ui/labels': 'jquery.ui',
'jquery-ui/jquery-1-7': 'jquery.ui',
'jquery-ui/plugin': 'jquery.ui',
'jquery-ui/safe-active-element': 'jquery.ui',
'jquery-ui/safe-blur': 'jquery.ui',
'jquery-ui/scroll-parent': 'jquery.ui',
'jquery-ui/tabbable': 'jquery.ui',
'jquery-ui/unique-id': 'jquery.ui',
'jquery-ui/version': 'jquery.ui',
'jquery-ui/widget': 'jquery.ui',
'jquery-ui/widgets/mouse': 'jquery.ui',
'jquery-ui/widgets/draggable': 'jquery.ui',
'jquery-ui/widgets/droppable': 'jquery.ui',
'jquery-ui/widgets/resizable': 'jquery.ui',
}
},
} );
require( ['dashhub'] );
。
答案 1 :(得分:4)
查看您要加载的jquery-ui.js
文件,我发现它是多个函数的组合,可以在单独的文件和中调用{{1} } 只有一次。因此它注册为单个模块。这一点很重要,因为如果它为define
,define
等每个人调用了jquery-ui/mouse
,那么解决方案就会有所不同,因为我们会谈论单个包含多个模块的jQuery UI文件。
好的,所以这个建立了,你可以做的是在RequireJS配置中使用jquery-ui/draggable
。我假设您已经有一个正确的map
配置,允许将paths
文件作为jquery-ui.js
模块加载。添加此地图:
jquery.ui
这表示在请求map: {
'*': {
'jquery-ui/mouse': 'jquery.ui',
'jquery-ui/draggable': 'jquery.ui',
// And so on for all different cases...
}
}
的所有模块(*
)中,然后加载jquery-ui/mouse
,依此类推,以便列在{{1}下列出的所有其他模块}。