Javascript 带有依赖项的jQuery插件

Javascript 带有依赖项的jQuery插件,javascript,jquery,jquery-plugins,requirejs,dependencies,Javascript,Jquery,Jquery Plugins,Requirejs,Dependencies,我正在尝试构建一个“简单的”jQuery插件,它依赖于其他jQuery插件(当然还有jQueryit本身) 经过一些阅读和研究,我决定require.js可以完成这项工作,但我无法找出两个主要问题 假设myPlugin.js依赖于其他两个jQuery插件: bootstrap datetimepicker.js和选择2.js 虽然bootstrap datetimepicker.js依赖于moment.js和bootstrap.js 这两个插件以及myPlugin.js都依赖于jQuery.js

我正在尝试构建一个“简单的”
jQuery
插件,它依赖于其他
jQuery
插件(当然还有
jQuery
it本身)

经过一些阅读和研究,我决定
require.js
可以完成这项工作,但我无法找出两个主要问题

假设
myPlugin.js
依赖于其他两个jQuery插件:

bootstrap datetimepicker.js
选择2.js

虽然
bootstrap datetimepicker.js
依赖于
moment.js
bootstrap.js
这两个插件以及
myPlugin.js
都依赖于
jQuery.js

第1期: 我想对使用
myPlugin.js
的人简化一些事情。 我只想给他们提供一个库,让他们在HTML页面上包含
myPlugin.js

然后,通过如下方式调用插件:
$('#target').myPlugin()
myPlugin.js
将完成注入依赖项以及该插件实际工作的所有必要工作。我不明白的是层次结构应该是怎样的。
我的意思是,如果我要使用
require.js
,我需要在
myPlugin.js
之前将其包含在html页面中, 此外,我还需要管理依赖项加载的顺序。
例如,使用
bootstrap datetimepicker.js
我需要首先加载
moment.js
jquery.js
bootstrap.js

因此,层次结构和时间安排是我在这里第一期的主要挑战

第二期: 重复和冲突怎么办?
例如,可能是想使用
myPlugin.js
的人已经加载了
jQuery.js
bootstrap.js


我不想再次加载它,并在他/她的页面上创建重复项和冲突。

您的插件应该使用以适合其执行环境的方式获取依赖项。您只需要更新AMD案例的分支,列出所有依赖项,并让RequireJS加载它们

您发布的内容应该只包含您的插件,并且您的代码不应该尝试加载依赖项。否则,我可以根据经验告诉你们,使用AMD装载机的人(仅举一组)会诅咒你们的名字。我不是在开玩笑,当你开始通过AMD加载器加载脚本时,会产生很多难以解决的问题。记录您的插件期望可用的内容,并让插件用户设置他们的环境以提供必要的模块

如果您认为包含依赖项的构建对插件的某些用户有用,那么创建一个包含几乎所有内容的附加构建。(在我看来,jQuery至少不应该出现在这个构建中。)