RequireJS с проверкой jQuery
Я пытаюсь использовать RequireJS, чтобы добавить ссылки на мои файлы сценариев проверки jQuery. У меня есть 3 файла сценария вместо обычного 1:
jquery.validate - библиотека проверки jqueryjquery.validate.unobtrusive - Это добавляет ненавязчивую проверку в библиотеку проверки jquery (так что вы можете использовать атрибуты данных, и она автоматически связывает их). Это зависит от jquery.validatejquery.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']
}
});
Но это дает ошибку тайм-аута.
Если бы кто-нибудь мог объяснить, почему второе решение не работает, это было бы здорово. Спасибо