jquery - RequireJS - 在上下文中隔离 jQuery 版本和插件

标签 jquery jquery-ui requirejs requirejs-text

我有一个项目,它利用多个 require 上下文并动态加载 jQuery 版本和插件。 (jQuery 版本将集中来源,不会内联)。主机和每个上下文的 jQuery 完整性以及插件隔离至关重要。

我正在为 RequireJS 编写一个加载器插件来处理以下用例:

  • 在特定的需求上下文中
  • 在不影响托管页面的 fn 或任何其他需要上下文的情况下,我想:
    • 加载我需要的任何版本的 jQuery
    • 将插件加载到我的特定 jQuery 版本的 fn
    • 对所需的 jQuery 版本具有引用完整性,以便我的 require 上下文中的任何模块都可以共享插件

我有一个带有测试的加载程序示例项目 here

当我使用加载器进行第二次调用时,最后一个条件失败了,它破坏了之前的版本。

我还使用 eval 将已加载插件中的 $ 引用隔离到本地加载的 jQuery 版本范围。任何关于更好的方法来做到这一点的想法将不胜感激。

如果有更简单/更干净的解决方案,希望保持简单(愚蠢)。

非常感谢。

最佳答案

我还必须在插件中执行此操作。您应该查看http://api.jquery.com/jQuery.noConflict/ 。举个例子:

jQueryLocal = jQuery.noConflict(true);

但是您当然应该尽量避免加载多个 jQueries。例如,您可以检查是否已经加载了足够的版本(在我的例子中,我在加载任何内容之前检查了 1.9+ 是否可用,如果是,则将局部变量设置为对现有全局 jQuery 对象的简单引用,但是然后我没有使用插件。

您可以通过以下方式检查版本:

var jQueryLocal;
var versions = (jQuery && /^([0-9]+)\.([0-9]+)\./.exec( jQuery.fn.jquery )) || [0,0];
if( versions[0] > 1 || versions[1] >= 9 ) {
    jQueryLocal = jQuery;
} else {
    // load script with whatever you're doing. If it's asynchronous, set callbacks etc.
    jQueryLocal = jQuery.noConflict(true);
}

关于jquery - RequireJS - 在上下文中隔离 jQuery 版本和插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13080463/

相关文章:

jquery - 增加flot饼图中的百分比字体大小

jquery - 从选项卡 ui 控件中删除边框

javascript - 使用 Require.js 在页面上运行 Q

javascript - play框架和requirejs开发javascript代码

javascript - WP8 上的 Cordova : requirejs can't resolve views

javascript - 使用 1 个 Angular cookie 个性化页面

c# - 如何在前端检测回发(aspx)

jquery - Bootstrap 模式确实显示正确

jquery-ui - JQuery UI Multiselect 如何获取选定的选项值

javascript - 将静态内容插入 jQuery UI 菜单小部件