【问题标题】:RequireJS - jQuery plugins with multiple jQuery versionsRequireJS - 具有多个 jQuery 版本的 jQuery 插件
【发布时间】: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:{} 配置,您可以使用它来解决使用问题
  • 请添加您找到的答案,以便将该问题从“未回答”选项卡中移出。

标签: jquery requirejs


【解决方案1】:

如果你真的使用 jquery 1.4 这个版本不支持 Requirejs,你应该定义 de shim 配置,但是你会遇到冲突,因为 jquery 全局定义了 $ 对象,所以它会覆盖任何现有的全局 $ 变量。 我认为你可以使用 jQuery.noConflict 来避免这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多