问题:有没有办法使用 AMD 支持(通过编译器)将 jquery 导入 TypeScript 模块,以便将 jquery 作为依赖项包含在内?
关键是获取import语句,这使得模块成为define语句中的依赖(见下文)。
define(["require", "exports", 'dataservice', 'jquery', 'knockout'],
function(require, exports, __ds__, $ , ko) {
...
}
)
详细信息:我想将 jquery(和其他 3rd 方库)作为 TypeScript 模块与 AMD 一起导入。目标是使它们在require
列表中显示为依赖项。然而,让 TypeScript 做到这一点的唯一方法似乎是有一个import
语句。并且要进行导入,您需要一个模块来导入。但是......没有 jquery 模块指向。到。
解决方法:
- 我可以参考 main.js 中的 .d.ts 并预加载 jquery 以获得 require.js,但这意味着预加载所有 3rd 方库。不可怕,但也不理想,因为它没有利用我们已经可以用 JavaScript 和 AMD 做的事情。
- 我可以为每个 3rd 方库创建一个模块并将其包装,但随后我得到类似 $.$ 的东西。更糟糕的是,IMO(并且 Irisk 为每个模块编写了错误的模块代码并且不同步)。
所以现在我只是在 main.js 中预加载 jquery。但同样,但这并不理想。对于没有模块的任何库,如淘汰赛、主干网等,都必须这样做。
有什么更好的建议或我缺少的东西吗?
更新/澄清:
我还可以在配置中使用 shims 来实现库之间的依赖关系。但这仍然会预加载第 3 方的。例子:
require.config({
baseUrl: '../',
paths: {
'jquery': 'lib/jquery-1.7.2',
'underscore': 'lib/underscore'
},
shim: {
jquery: {
exports: '$'
},
underscore: {
exports: '_'
}
}
});