我对RequireJS有一个大问题。我写了一个插件,插件运行良好。它不使用define
。当我使用requirejs(["myplugin!path..."]...
时,它完美无缺:
requirejs.config({
baseUrl: "/",
paths: {
"myplugin" : "path to plugin code ..."
}
});
requirejs(["myplugin!path..."], function (something) {
//works perfectly
});
问题出在哪里?问题是当我尝试使用requirejs配置时,例如:
requirejs.config({
baseUrl: "/",
paths: {
"myplugin" : "path to plugin code ...",
"loadWithPlugin": "myplugin!path..."
}
});
requirejs(["loadWithPlugin"], function (something) {
//Ignores the plugin totaly...
});
这样,RequireJS会忽略该插件。这意味着我无法将shim
和deps
以及map
用于不同的版本等。
我该如何解决这个问题?
答案 0 :(得分:0)
plugin!module
语法作为模块名称是有意义的。但是,paths
设置将模块名称映射到路径,路径不是模块名称。因此,如果您将其作为paths
中的值,!
之前的文本将不会被解释为插件。
您可以改用map
。它将模块名称映射到模块名称。 foo
解析为myPlugin!moduleA
的示例:
require.config({
baseUrl: "js",
paths: {
myPlugin: "lib/myPlugin",
},
map: {
"*": {
foo: "myPlugin!moduleA",
},
}
});
require(["foo"], function (q) {
console.log("Q");
});