Javascript 使用require.js扩展jquery(多个扩展)?

Javascript 使用require.js扩展jquery(多个扩展)?,javascript,jquery,requirejs,extending,Javascript,Jquery,Requirejs,Extending,我正在转换一些旧的网站代码,尽可能利用AMD和按需加载。我遇到的一件事是,该站点在某些页面上使用了较旧版本的jquery(在重构代码并使用较新版本进行测试之前,我已经了解了如何进行配置),但最初的开发人员还为一些表单的jquery添加了许多扩展 我最终还想重构这些,但由于它使用了许多新的助手函数来扩展jquery,我想知道如何配置require.js以确保加载这些扩展。最糟糕的情况是,我可以将其附加到jquery.js上,但我不希望有人不知道他们在那里,而是替换jquery本身,根据这些扩展破坏

我正在转换一些旧的网站代码,尽可能利用AMD和按需加载。我遇到的一件事是,该站点在某些页面上使用了较旧版本的jquery(在重构代码并使用较新版本进行测试之前,我已经了解了如何进行配置),但最初的开发人员还为一些表单的jquery添加了许多扩展

我最终还想重构这些,但由于它使用了许多新的助手函数来扩展jquery,我想知道如何配置require.js以确保加载这些扩展。最糟糕的情况是,我可以将其附加到jquery.js上,但我不希望有人不知道他们在那里,而是替换jquery本身,根据这些扩展破坏任何代码

extends块看起来像:

jQuery.fn.extend({
    vshow: function(speed,callback) { /* ... */ },
    vhide: function(speed,callback) {  /* ... */  },
    vshowif: function(b) {  /* ... */  },
    showif: function(b) {  /* ... */  },
    selected: function(i) {  /* ... */  },
    addOptions: function(a,f,p) { /* ... */  },
    setOptions: function(a,f,p) {  /* ... */  },
    validateForm: function(f) {  /* ... */  },
    lt: function(n) {  /* ... */  },
    gt: function(n) {  /* ... */  }
});

我知道我也可以将它们分解为多个jquery.function.js文件,但其中一些文件只有几行。我想知道是否有一种方法,或者正确的方法是什么,以确保在使用jquery时在jquery之后加载这些内容?

我有一个临时修复程序,它基于我正在升级的代码的几个因素,但这不是一个理想的解决方案。(我认为最终的解决方案是将自定义扩展分离为单独的插件文件,并将它们包含在需要它们的依赖项列表中)

我要处理的问题之一是这是一个旧的代码库。我目前没有时间完全升级/更新所有库并彻底测试它们,因为当前项目是一个优先事项。但是现有代码使用的jquery版本是一个旧版本,甚至可能还没有完全升级。 我的新代码所使用的功能相当基本(主要是简单的ajax调用),并且适用于新版本和旧版本。我不能确定遗留代码的用法或这些扩展是如何工作的。因此,使用旧的jquery提供了一个更简单的解决方案

因此,当我告诉require.js加载'old'jquery以保持与遗留代码的兼容性时,它实际上是在重新加载jquery并删除原始表单使用的扩展函数,导致它在未定义扩展函数时自动失败

目前,我将上面的extends块放在它自己的.js文件中,我称之为jquery-extended.js。然后,我为以下各项添加了一个垫片配置:

    "jquery.extended" : {
        "deps" : ['jquery'],
        "exports" : "$"
    },
然后,我将当前需要jquery的任何lib/模块的依赖项改为jquery.extended,而不仅仅是jquery,并且它似乎至少允许代码工作


但是,如果有任何关于处理此问题的其他建议,我会很好奇地听到它们。

我有一个临时修复程序,它基于我正在升级的代码的几个因素,但这不是一个理想的解决方案。(我认为最终的解决方案是将自定义扩展分离为单独的插件文件,并将它们包含在需要它们的依赖项列表中)

我要处理的问题之一是这是一个旧的代码库。我目前没有时间完全升级/更新所有库并彻底测试它们,因为当前项目是一个优先事项。但是现有代码使用的jquery版本是一个旧版本,甚至可能还没有完全升级。 我的新代码所使用的功能相当基本(主要是简单的ajax调用),并且适用于新版本和旧版本。我不能确定遗留代码的用法或这些扩展是如何工作的。因此,使用旧的jquery提供了一个更简单的解决方案

因此,当我告诉require.js加载'old'jquery以保持与遗留代码的兼容性时,它实际上是在重新加载jquery并删除原始表单使用的扩展函数,导致它在未定义扩展函数时自动失败

目前,我将上面的extends块放在它自己的.js文件中,我称之为jquery-extended.js。然后,我为以下各项添加了一个垫片配置:

    "jquery.extended" : {
        "deps" : ['jquery'],
        "exports" : "$"
    },
然后,我将当前需要jquery的任何lib/模块的依赖项改为jquery.extended,而不仅仅是jquery,并且它似乎至少允许代码工作

但是,如果在处理这个问题上还有其他建议的话,我很想听听