【发布时间】:2014-02-12 18:29:53
【问题描述】:
我正在尝试将一些遗留的 js 代码包装在模块中,以便可以使用 RequireJS 加载它们。
我有三个 jQuery 插件,我们称它们为 a、b 和 c。
- 插件适用于任何版本的 jQuery
- 插件 b 适用于 jQuery 版本 1.4.2
- 插件 c 使用 a 和 b,适用于任何版本的 jQuery。
所以任何时候需要插件 a 时,需要加载的 jQuery 都是 1.4.2 版本。 我的 require.config 看起来像:
require.config({
paths:{
"jquery": "libs/jquery.1.9.1.min",
"jquery1-4-2" : "libs/jquery1.4.2.min"
});
插件定义如下:
plugin a:
define(["jquery"], function($){ (...) });
plugin b:
define(["jquery1-4-2"], function($){ (...) });
plugin c:
define(["jquery", "a","b"], function($){ (...) });
我如何配置这个场景,以便如果任何插件需要某个版本的 jQuery,而其他插件不需要一个版本,那么只加载某个版本?
提前致谢。
【问题讨论】:
-
如果有人有兴趣,可以在这里找到适合这种场景的解决方案:github.com/jadekler/git-web-requiredemo
-
那么归结为使用
map根据依赖的模块重新定义jquery模块? -
据我了解,map 告诉 requireJS:好的,当这个模块“oldplugin”请求“jquery”时,您将返回另一个 js,而不是为模块“jquery”定义的那个。在使用诸如 require(["jquery","oldplugin"], function($){ (...)}) 之类的东西时要小心使用 jQuery 命名空间,因为 $ 将代表“默认”jquery 版本,而不是一个由“oldplugin”的require JS通过地图加载。
-
您好,在 Require js 中有 shim:{} 配置,您可以使用它来解决使用问题
-
请添加您找到的答案,以便将该问题从“未回答”选项卡中移出。