Javascript 使用require.js扩展jquery(多个扩展)?
我正在转换一些旧的网站代码,尽可能利用AMD和按需加载。我遇到的一件事是,该站点在某些页面上使用了较旧版本的jquery(在重构代码并使用较新版本进行测试之前,我已经了解了如何进行配置),但最初的开发人员还为一些表单的jquery添加了许多扩展 我最终还想重构这些,但由于它使用了许多新的助手函数来扩展jquery,我想知道如何配置require.js以确保加载这些扩展。最糟糕的情况是,我可以将其附加到jquery.js上,但我不希望有人不知道他们在那里,而是替换jquery本身,根据这些扩展破坏任何代码 extends块看起来像:Javascript 使用require.js扩展jquery(多个扩展)?,javascript,jquery,requirejs,extending,Javascript,Jquery,Requirejs,Extending,我正在转换一些旧的网站代码,尽可能利用AMD和按需加载。我遇到的一件事是,该站点在某些页面上使用了较旧版本的jquery(在重构代码并使用较新版本进行测试之前,我已经了解了如何进行配置),但最初的开发人员还为一些表单的jquery添加了许多扩展 我最终还想重构这些,但由于它使用了许多新的助手函数来扩展jquery,我想知道如何配置require.js以确保加载这些扩展。最糟糕的情况是,我可以将其附加到jquery.js上,但我不希望有人不知道他们在那里,而是替换jquery本身,根据这些扩展破坏
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,并且它似乎至少允许代码工作
但是,如果在处理这个问题上还有其他建议的话,我很想听听