Вопрос. Есть ли способ импортировать jquery в модуль TypeScript, используя поддержку AMD (через компилятор), поэтому он включает jquery в качестве зависимости?
Ключом является получение инструкции import, которая делает зависимость модуля зависимой в инструкции define (см. ниже).
define(["require", "exports", 'dataservice', 'jquery', 'knockout'],
function(require, exports, __ds__, $ , ko) {
...
}
)
Подробнее:
Я хочу импортировать jquery (и другие сторонние библиотеки) в качестве модулей TypeScript с AMD. Цель состоит в том, чтобы заставить их отображаться как зависимость в списке require
. Однако единственным способом сделать TypeScript для этого является наличие инструкции import
. И для импорта вам нужен модуль для импорта. Но... нет jquery-модуля, на который нужно ссылаться.
к.
Обходные
- Я могу ссылаться на .d.ts и preload jquery в main.js для require.js, но это означает предварительную загрузку всех сторонних библиотек. Не страшно, но не идеально, так как он не использует то, что мы можем уже делать с JavaScript и AMD.
- Я могу создать модуль для каждой сторонней библиотеки и обернуть его, но тогда я получаю что-то вроде $. $. Что еще хуже, IMO (и Irisk записывают неправильный код модуля для каждого из них и выходят из синхронизации).
Итак, теперь я просто загружаю jquery в main.js. но опять же, но это меньше идеала. Должен сделать это для любой библиотеки, такой как нокаут, позвоночник и т.д., У которого нет модуля.
Любые лучшие предложения или что-то мне не хватает?
Update/Разъяснение:
Я также могу использовать прокладки в конфигурации для зависимостей между библиотеками. Но это все еще предваряет сторонние. Пример:
require.config({
baseUrl: '../',
paths: {
'jquery': 'lib/jquery-1.7.2',
'underscore': 'lib/underscore'
},
shim: {
jquery: {
exports: '$'
},
underscore: {
exports: '_'
}
}
});