我将以我实际在做的事情为例。我有一个淘汰赛自定义绑定,它依赖于一个 jquery 插件,该插件本身依赖于当然依赖于 jQuery 的 jQuery UI。还有另一个文件依赖于另一个插件,另一个文件依赖于 jQuery UI 等。在 require.config.js 我有:
shim: {
"jquery-ui": {exports: "$", deps: ["jquery"]},
"jquery-plugin1": {exports: "$", deps: ["jquery-ui"]},
"jquery-plugin2": {exports: "$", deps: ["jquery-ui"]}
}
这有效,然后在相应的文件中我可以这样做:
define(["jquery-plugin1"], function ($) {
但是,我也可以这样做:
define(["jquery", "jquery-ui", "jquery-plugin1"], function ($) {
还有一种情况是文件可能依赖于两个插件:
// which one?
define(["jquery-plugin1", "jquery-plugin2"], function ($) {
define(["jquery", "jquery-ui", "jquery-plugin1", "jquery-plugin2"], function ($){
可能还有其他依赖项,例如淘汰赛自定义绑定(不需要导出任何内容),所以我最终可能会得到:
define(["jquery-plugin1", "model1", "model2",
"ko-custom1", "ko-custom2", "ko-custom3",
"jquery-plugin2"],
function ($, m1, m2) {
该文件也可能依赖于 jQuery UI(依赖于 jQuery),但它们都是通过插件隐式加载的。
我的问题是最好明确所有要求(即在 jQuery 和 jQuery-UI 中包含define
)并可能不进行导出,还是首选不那么冗长的嵌套依赖项处理?