我正在尝试使用 RequireJS 添加对我的 jQuery 验证脚本文件的引用。我有 3 个脚本文件,而不是通常的 1 个:
- jquery.validate - jquery 验证库
- jquery.validate.unobtrusive - 这为 jquery 验证库添加了不显眼的验证(因此您可以使用数据属性并自动将它们连接起来)。这取决于 jquery.validate
- jquery.validate.custom - 这添加了我自己的自定义不显眼验证方法并依赖于 jquery.validate.unobtrusive
我已经设置了以下配置:
require.config({
paths: {
'jquery': 'Scripts/jquery-1.8.3.min',
'jquery.validate': 'Scripts/jquery.validate.custom'
},
shim: {
'Scripts/jquery.validate': ['jquery'],
'Scripts/jquery.validate.unobtrusive': ['jquery', 'Scripts/jquery.validate'],
'Scripts/jquery.validate.custom': ['jquery', 'Scripts/jquery.validate.unobtrusive']
}
});
现在我有以下模块:
define(['jquery', 'jquery.validate'], function($) {
alert('Yey!');
});
但是 jquery.validate.custom 文件中抛出一个错误,告诉我未注入不显眼的依赖项。在使用浏览器工具进行一些调试并查看网络选项卡后,我可以看到它成功下载了 jquery.validate.custom.js 和 jquery.validate.js 文件,但它甚至没有尝试下载 jquery.validate.unobtrusive。 .js 文件。
如果有人能告诉我我做错了什么,我将不胜感激。谢谢
编辑:
我现在尝试过:
require.config({
paths: {
'jquery': 'Scripts/jquery-1.8.3.min',
'jquery.validate': 'Scripts/jquery.validate.custom'
},
shim: {
'Scripts/jquery.validate': ['jquery'],
'Scripts/jquery.validate.unobtrusive': ['jquery', 'Scripts/jquery.validate'],
'jquery.validate': ['jquery', 'Scripts/jquery.validate.unobtrusive']
}
});
它工作正常。我还尝试了以下方法,因为我认为它看起来更好:
require.config({
paths: {
'jquery': 'Scripts/jquery-1.8.3.min',
'jquery.validate': 'Scripts/jquery.validate.custom',
'jquery.validate.core': 'Scripts/jquery.validate',
'jquery.validate.unobtrusive': 'Scripts/jquery.validate.unobtrusive'
},
shim: {
'jquery.validate.core': ['jquery'],
'jquery.validate.unobtrusive': ['jquery', 'jquery.validate.core'],
'jquery.validate': ['jquery', 'jquery.validate.unobtrusive']
}
});
但这会产生超时错误。
如果有人能解释为什么第二种解决方案不起作用,那就太好了。谢谢